Buffer(缓冲器)
1 Buffer 介绍
Buffer 是一个类似于数组的 对象
,用于表示固定长度的字节序列,Buffer 本质是一段内存空间,专门用来处理 二进制数据`。
2 特点
1)大小固定:在创建时就确定了,且无法调整。
2)性能较好,直接对计算机的内存进行操作。
3)每个元素大小为 1 字节(byte)。
3 操作
3.1 创建 Buffer
1) 使用 Buffer.alloc() 方法创建 Buffer。
Buffer.alloc(10); // <Buffer 00 00 00 00 00 00 00 00 00 00>
Buffer.alloc(2,"a"); // <Buffer 61 61>
Buffer.alloc(2,257); // <Buffer 01 01>
2) Buffer.allocUnsafe() 方法创建不安全的 Buffer,可能会存在旧数据。
Buffer.allocUnsafe(10);
3)Buffer.from() 方法通过指定的数组或字符串创建 Buffer。
Buffer.from("abcdefghik"); // <Buffer 61 62 63 64 65 66 67 68 69 6b>
Buffer.from([1, 2, 3]); // <Buffer 01 02 03>
3.2 读取 Buffer
可以直接通过 []
的方式对数据进行处理,可以使用 toString 方法将 Buffer 输出为字符串。
const b = Buffer.from("abcdefghik");
b[7];
b.toString();
b.forEach((item, index)=>{
console.log(item, index);
});
3.3 Buffer 与字符串转换
使用 Buffer 实例的 toString()
方法将 Buffer 转为字符串.
let buf = Buffer.from([105, 108, 111, 118, 101, 121, 111, 117])
console.log(buf.toString()) //=>iloveyou
注意: 默认是按照
utf-8
编码方式进行转换的。
3.4 关于溢出
Buffer 实例的每个元素只有 1 个字节,能表示的最大数字是 255, 溢出的高位数据会舍弃。
buff3[0] = 365; // 0001 0110 1101
console.log(buff3[0]); // 109
3.5 关于中文
一个 UTF-8 的中文字符大多数情况都是占 3 个字节
2.5 关于单位换算
1 个 bit(比特)表示一个二进位,一般用 b 表示,1 个字节由 8 个二进位组成,也就是 8 bit 组成,一般用 B 表示。
8b = 1B
1024B = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB