Buffer(缓冲器)

1 Buffer 介绍

Buffer 是一个类似于数组的 对象 ,用于表示固定长度的字节序列,Buffer 本质是一段内存空间,专门用来处理 二进制数据`。

buffer

2 特点

1)大小固定:在创建时就确定了,且无法调整。

2)性能较好,直接对计算机的内存进行操作。

3)每个元素大小为 1 字节(byte)。

buffer

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

附录 unicode 字符集

results matching ""

    No results matching ""