Nodejs buffer 输出到文件非二进制 求助

Nodejs buffer 输出到文件非二进制 求助

let bufOut = new Buffer(pos);
bufBin.copy(bufOut, 0, 0, pos);

fs.writeFile(’./magic.bin’, bufOut, function(err){ if(err){ console.log(“error”); }else { console.log(“ok”); } })

为什么文件显示的还是 utf8 编码的类容,还非二进制显示? 输出如下

3_id8_nameSid3_py8_keyword9_costGems8_skillId1I1D1S1B1I2[I61110014soul111941000420004300044000

5 回复

fs.writeFile(’./magic.bin’, bufOut, function(err){
这句改成
fs.writeFile(’./magic.bin’, bufOut, ‘binary’, function(err){
或者 hex 等其他想要的编码试试

你要怎样二进制显示呢?
如果你原本的内容就已经是 utf8 文本 就算你用二进制方式编码
fs.writeFile(’./magic.bin’, bufOut, ‘binary’, function(err){
存下来的文件还是文本啊 你里面又没有什么非文本的内容

除非你用 HEX 或者 Base64 编码 那么就会保存成代表二进制你看不懂的文本了 不知道是不是你想要的

你里面又没有 unicode 或者 真正非文本二进制数据
ascii 的文本内容 你怎么存 只要不是 hex 或者 base64 再编码 也还是文本啊

在 Node.js 中,Buffer 对象用于处理二进制数据。如果你想将 Buffer 输出到文件,并且确保它以二进制形式写入,可以使用 fs.writeFileSyncfs.writeFile 方法,并指定文件编码为 'binary' 或者更常见的(在写入二进制数据时)省略编码参数,因为默认行为就是写入二进制数据。

以下是一个简单的示例,展示如何将 Buffer 输出到文件并保持其二进制格式:

const fs = require('fs');

// 创建一个示例 Buffer,这里用字符串 "Hello, World!" 转换为 Buffer,实际使用中可能是其他二进制数据
const buffer = Buffer.from('Hello, World!', 'utf8');

// 写入文件,省略编码参数,默认写入二进制数据
fs.writeFile('output.bin', buffer, (err) => {
  if (err) throw err;
  console.log('Buffer has been written to output.bin');
});

// 或者使用同步方法
try {
  fs.writeFileSync('output_sync.bin', buffer);
  console.log('Buffer has been written to output_sync.bin synchronously');
} catch (err) {
  console.error(err);
}

在上面的代码中,Buffer.from 用于创建一个 Buffer 对象。fs.writeFilefs.writeFileSync 用于将 Buffer 写入文件。注意,在 fs.writeFile 中我们省略了编码参数,这样数据就会以二进制形式写入文件。

如果你遇到非二进制输出的问题,请检查你的写入逻辑,确保没有意外地将数据转换为字符串或其他格式。

回到顶部