搜索文档
定义
- Buffer 中文译为缓冲区,是一个类似于 Array 的对象,用于表示固定长度的字节序列。
- Buffer 就是一段固定长度的内存空间,用于处理二进制数据。
特点
- Buffer 大小固定且无法调整。
- Buffer 性能较好,可以直接对计算机内存进行操作。
- 每个元奈的大小为 1字节 (byte)
创建 Buffer
alloc
jslet buf = Buffer.alloc(10); // 分配 10 个字节全新的空间,每一位都是 0 console.log(buf); // 输出结果:<Buffer 00 00 00 00 00 00 00 00 00 00>allocUnsafe
jslet buf = Buffer.allocUnsafe(10); // 分配 10 个字节空间,空间原数据不会被清 0 allocUnsafe 比 alloc 快 console.log(buf); // 输出结果:<Buffer 00 00 00 12 00 fd 00 00 00 00> 每次都不一样from
jslet buf = Buffer.from('Hello'); console.log(buf); // 输出结果:<Buffer 48 65 6c 6c 6f> 内存中存储每个字符的 16 进制 ASCII 码
其他操作
Buffer 转字符串
jslet buf = Buffer.from([72, 101, 108, 108, 111]); // 每位字符的 10 进制 ASCII 码 console.log(buf.toString()); // 输出结果:Hello读取和修改
jslet buf = Buffer.from('Hello'); console.log(buf[0]); // 输出结果:72 buf[0] = 65; console.log(buf.toString()); // 输出结果:Aello
注意事项
溢出:每个字节占 8 位二进制空间,若存储的数据大于 8 位,Node 会舍去高位,保留低八位。
jslet buf = Buffer.from('Hello'); buf[0] = 257; // 十进制 257 转二进制:1 0000 0001 实际存储值为: 0000 0001 console.log(buf); // 输出结果:<Buffer 01 65 6c 6c 6f>存储中文:每个中文会根据文件的编码格式进行转换,如 utf-8 将每个汉字转为 3 个字节存储。
jslet buf = Buffer.from('你好'); console.log(buf); // 输出结果:<Buffer e4 bd a0 e5 a5 bd>
