buff

13 阅读1分钟

Buffer(缓冲区)主要用于处理二进制数据。其本质上是一个字节数组,也就是在内存中以连续的字节序列进行存储。

几种创建方式

方式一

const buf1 = Buffer.alloc(10)
console.log(buf1);

使用 Buffer.alloc(size, fill, encoding) 创建一个指定大小的 Buffer 对象。这里创建了一个大小为 10 字节的 Buffer 对象,并且没有初始化数据,所以它的内容是未定义的。

由于 buf1 没有初始化,它的内容将显示为一堆乱码。 <Buffer 00 00 00 00 00 00 00 00 00 00>

方式二

const buf2 = Buffer.alloc(10, 1)
console.log(buf2);

是这次用数字 1 初始化了所有的字节。所以 buf2 的内容将是十个 1。<Buffer 01 01 01 01 01 01 01 01 01 01>

方式三

const buf3 = Buffer.allocUnsafe(10)
console.log(buf3);

使用 Buffer.allocUnsafe(size) 创建一个大小为 10 字节的 Buffer 对象。这个方法是不安全的,因为它不会初始化 Buffer 中的内存,可能包含敏感数据, 也就是之前内存中的存在的数据,使用前应该手动清除内存。

方式四

const buf4 = Buffer.from('hello')
console.log(buf4);

使用 Buffer.from(array)Buffer.from(string, encoding) 创建一个 Buffer 对象。这里,Buffer.from(string) 将字符串 hello 转换为一个 Buffer 对象,默认编码为 utf8<Buffer 68 65 6c 6c 6f>

const buf5 = Buffer.from('hello', 'utf8')
console.log(buf5);

指定编码

buff转为string

const buf5 = Buffer.from('hello', 'utf8')
console.log(buf5);

console.log(buf5.toString());

toString方法转为字符串, 但有一个前提就是本身可以转换, 否则要不就是乱码