Nodejs console.log打印buffer长度的问题?

Nodejs console.log打印buffer长度的问题?

node.js中使用console.log打印比较长的数据,后面的数据会使用省略号。如下:

<Buffer 04 00 00 8d 11 0b 01 ........>

谁知道能将所有数据都打印出来,谢谢!

ps:不想使用toString(),就是想看这种十六进制的数据!!

5 回复

Node.js 中 console.log 打印 Buffer 长度的问题?

在 Node.js 中,当你使用 console.log() 打印一个较长的 Buffer 对象时,console.log() 默认会显示为省略号(...)以减少输出信息量。如果你希望打印出完整的 Buffer 数据,而不使用 toString() 方法,可以考虑以下几种方法。

方法一:使用 util.inspect 方法

util.inspect 可以帮助你自定义对象的字符串表示形式。通过传递选项参数,你可以控制输出格式。

const util = require('util');

const buffer = Buffer.from([0x04, 0x00, 0x00, 0x8d, 0x11, 0x0b, 0x01]);

// 使用 util.inspect 打印完整 Buffer
console.log(util.inspect(buffer, { depth: null, colors: true }));

方法二:手动遍历并打印 Buffer 的每个字节

如果你只想看到十六进制数据,可以通过遍历 Buffer 的每个字节来实现。

const buffer = Buffer.from([0x04, 0x00, 0x00, 0x8d, 0x11, 0x0b, 0x01]);

// 手动遍历并打印每个字节的十六进制值
let hexString = '';
for (let i = 0; i < buffer.length; i++) {
    hexString += buffer[i].toString(16).padStart(2, '0') + ' ';
}
console.log(hexString);

示例输出

使用上述任意一种方法,你将能够得到完整的 Buffer 数据:

04 00 00 8d 11 0b 01

或者,如果你使用 util.inspect,则输出可能如下所示:

<Buffer 04 00 00 8d 11 0b 01>

这两种方法都可以帮助你在不使用 toString() 的情况下查看完整的 Buffer 数据。选择适合你的需求的方法即可。


随便在网上找了一段:

var buf = new Buffer(new Array(100).join('abc'));

var arr = new Array();

for (var i = 0; i < buf.length; i++) { arr.push(buf[i].toString(16)); }

console.log(arr.join(’ '));

这是一种方法!谢谢,请问为什么console.log为什么会省略buffer后面的数据,是那里可以配置的吗?

在Node.js中,当你使用console.log()打印一个Buffer对象时,默认情况下它只会显示部分数据,并以省略号表示剩余的数据。如果你希望打印完整的Buffer内容而不使用toString()方法,可以通过遍历Buffer的每个字节来实现。

以下是一个简单的示例代码,展示了如何完整地打印Buffer的内容:

const buffer = Buffer.from([0x04, 0x00, 0x00, 0x8d, 0x11, 0x0b, 0x01]);

// 打印Buffer的长度
console.log(`Buffer length: ${buffer.length}`);

// 遍历并打印Buffer中的每个字节
let bufferContent = '<Buffer ';
for (let i = 0; i < buffer.length; i++) {
    bufferContent += buffer[i].toString(16).padStart(2, '0') + ' ';
}
bufferContent += '>';

console.log(bufferContent);

上述代码中:

  1. 使用Buffer.from()创建了一个Buffer对象。
  2. 使用console.log()打印了Buffer的长度。
  3. 通过遍历Buffer的每个字节,将其转换为16进制字符串并添加到bufferContent变量中。
  4. 最终输出完整的Buffer内容,包括长度信息和每个字节的16进制值。

运行这段代码,你将会看到类似如下的输出:

Buffer length: 7
<Buffer 04 00 00 8d 11 0b 01>

这样,你就可以完整地查看Buffer的内容,而不需要使用toString()方法。

回到顶部