Nodejs new Buffer("test")返回的是什么编码

Nodejs new Buffer(“test”)返回的是什么编码

	var buf = new Buffer(‘test’);
console.log(buf) //返回<Buffer 74 65 73 74>

看了nodejs的Buffer,对于new Buffer返回的结果有点不甚了解。 如上面的 test 会对应 74 65 73 74 这个返回的是什么编码或者是否有对应的编码表可表示这个对应关系 搜索了下好多都是Buffer是什么,怎么使用,却没有解释这个返回结果的。 求懂的解惑赐教下。哈哈


4 回复

标题:Node.js new Buffer("test") 返回的是什么编码

内容:

var buf = new Buffer('test');
console.log(buf); // 返回 <Buffer 74 65 73 74>

在Node.js中,Buffer对象用于处理二进制数据。当你创建一个Buffer并传入字符串时,默认情况下,该字符串会被编码为UTF-8格式。上述代码中的'test'字符串被转换为一个Buffer对象,其中每个字符都被转换为其对应的UTF-8编码的十六进制值。

具体来说:

  • 't' 对应 74
  • 'e' 对应 65
  • 's' 对应 73
  • 't' 对应 74

因此,<Buffer 74 65 73 74> 表示的是一个包含这些十六进制值的缓冲区,这些值是字符 'test' 在UTF-8编码下的表示。

示例代码

// 创建一个包含 'test' 字符串的 Buffer
var buf = new Buffer('test');

// 输出 Buffer 的内容
console.log(buf); // 输出: <Buffer 74 65 73 74>

// 将 Buffer 转换回字符串
console.log(buf.toString()); // 输出: test

在这个例子中,我们首先创建了一个包含字符串 'test'Buffer 对象,并将其存储在变量 buf 中。然后我们输出 buf 的内容,可以看到它是一个十六进制表示的缓冲区 <Buffer 74 65 73 74>。最后,我们将这个 Buffer 对象转换回字符串,输出结果是 'test'

编码表

UTF-8 是一种变长的字符编码方式,常见的字符占用1到4个字节。以下是几个常见的ASCII字符及其对应的UTF-8编码:

字符 UTF-8 编码(十六进制)
A 41
t 74
e 65
s 73

通过这个表,你可以看到每个字符在UTF-8编码下的十六进制表示。

希望这能帮助你理解Node.js中的Buffer对象以及如何处理字符串与二进制数据之间的转换。


在没有指定编码的情况下肯定是u8编码。 ut8编码是兼容ascii的,所以至少是0-127的范围内是兼容的,扩展的部分从128-255我没有查证不能乱说。 所以,你查下ascii表的小写t的十进制表示是116,16进制表示是74。

就是一块内存区域里面各元素的 16 进制。

在 Node.js 中,new Buffer('test') 创建的 Buffer 对象中的内容是以 UTF-8 编码存储的。Buffer 是一种用于处理二进制数据的工具,它将字符串转换为字节序列。

当你看到 &lt;Buffer 74 65 73 74&gt; 这样的输出时,每个十六进制值(例如 74)都代表一个字符在 UTF-8 编码下的字节值。具体来说:

  • 74 对应字符 't'
  • 65 对应字符 'e'
  • 73 对应字符 's'
  • 74 对应字符 't'

因此,Buffer 对象实际上保存了这些字符的 UTF-8 字节序列。

示例代码

var buf = new Buffer('test');
console.log(buf); // 返回 <Buffer 74 65 73 74>

// 打印每个字节的值
buf.forEach((value, index) => {
    console.log(`Index ${index}: ${value.toString(16)}`);
});

输出

<Buffer 74 65 73 74>
Index 0: 74
Index 1: 65
Index 2: 73
Index 3: 74

从输出可以看到,每个字节的值与原始字符串的 UTF-8 编码是一致的。你可以通过查看 UTF-8 编码表 来进一步理解这种对应关系。

回到顶部