Buffer中文译名为缓冲区,是一个类似于Array的对象,用于表示固定长度的字节序列。可以说buffer是一段固定长度的内存空间,用于处理二进制数据。
buffer的特点:
- Buffer大小固定且无法调整
- Buffer性能较好,可以直接对计算机内存进行操作
- 每个元素的大小为1字节。(1 Byte = 8 bit)
Buffer的创建和使用
Buffer的创建有三种方式,分别是:alloc、allocUnsafe、from。
1、alloc
我们先来看一段代码:
javascript
let buf1 = Buffer.alloc(10);
表示创建了一个长度为10字节的Buffer。在这个地方的Buffer可以看做全局变量。我们打印一下buf变量来观察Buffer。
javascript
console.log(buf1);

可以看到共有十个二进制位,且每一个二进制位都会归零。
2、allocUnsafe
同样来看代码:
javascript
let buf2 = Buffer.allocUnsafe(10);
console.log(buf2);
输出结果和alloc一模一样。和alloc不同的是,allocUnsafe创建的Buffer可能包含旧的内存数据,因此名字中有个unsafe。
3、from
from可以将字符串或数组转移为buffer.
同样来看代码:
javascript
let buf3 = Buffer.from('hello');
console.log(buf3);
运行后的结果为:

打印出的是hello五个字母对应的ASCII码的十六进制表示。同样的,数组也能使用from来表示,这里就不演示了。
操作与注意事项
Buffer与字符串的转换
我们先建立一个文件,输入下面的代码;将数组转换为Buffer:
javascript
let buf = Buffer.from([105,108,111,118,101,121,111,117]);
console.log(buf.toString());
toString 方法可以将变量转换为字符串形式。我们运行之后的结果为打印出了iloveyou。即为该数组转换后的字符串形式。

Buffer元素的读写
其实这部分和数组很相似。我们来看下面的代码:
javascript
let Buf = Buffer.from('hello');
console.log(Buf[0]);
运行结果为打印出105;对应字母h。我们可以看到可以通过使用下标的方式来访问Buffer中的元素。同样可以对元素进行赋值修改。