You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中Buffer调用toString('binary')乱码?如何查看原始二进制?

如何查看Buffer中的原始二进制(0和1)及问题原因

为什么toString('binary')无法实现需求

你用的imageBuffer.toString('binary')根本不是输出二进制位的0和1。Node.js里的Buffer.toString('binary')本质是把每个字节按照Latin-1(ISO-8859-1)编码转成对应字符,每个字节对应一个字符,但多数字节对应的是不可打印字符,所以输出就是你看到的乱码,完全和原始二进制位无关。

查看原始0和1的实现方法

要获取原始的二进制位序列,你需要把Buffer里的每个字节转换成8位的二进制字符串,再拼接起来。以下是两种实用写法:

方法1:输出连续的二进制字符串

const fs = require('fs');

const imageBuffer = fs.readFileSync('path/to/image.jpg');

function bufferToBinaryString(buffer) {
  return buffer.reduce((result, byte) => {
    // 把单个字节转成8位二进制,不足8位补前导零
    return result + byte.toString(2).padStart(8, '0');
  }, '');
}

const binaryString = bufferToBinaryString(imageBuffer);
console.log(binaryString);

方法2:按字节分段输出(更易读)

如果觉得连续字符串太长,可以给每个字节的二进制加空格分隔:

const fs = require('fs');

const imageBuffer = fs.readFileSync('path/to/image.jpg');

function bufferToBinaryWithSpaces(buffer) {
  return buffer.map(byte => byte.toString(2).padStart(8, '0')).join(' ');
}

console.log(bufferToBinaryWithSpaces(imageBuffer));

内容的提问来源于stack exchange,提问作者Jack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 03:12:58