Node.js Buffer:二进制数据操作
掌握 Buffer 类的创建、读写、编码转换及实际应用场景。 · 难度:入门 · +15XP
Buffer 是什么?
Buffer 是 Node.js 用于处理二进制数据的全局类。在 JavaScript 原生没有二进制类型时,Buffer 提供了在 TCP 流、文件系统等场景下直接操作字节的能力。每个 Buffer 对应一块固定大小的内存。
创建 Buffer
// 分配 10 字节的缓冲区(默认填充 0)
const buf1 = Buffer.alloc(10);
// 从数组创建
const buf2 = Buffer.from([0x48, 0x65, 0x6c, 0x6c, 0x6f]); // Hello
// 从字符串创建(默认 utf8)
const buf3 = Buffer.from('你好', 'utf8');
console.log(buf1); //
console.log(buf2.toString()); // Hello
console.log(buf3.toString('hex')); // e4bda0e5a5bd
读写操作
| 方法 | 说明 |
|---|---|
| buf.readInt8(offset) | 读取有符号 8 位整数 |
| buf.writeUInt16BE(value, offset) | 写入无符号 16 位整数(大端序) |
| buf.toString(encoding) | 按编码转为字符串 |
| buf.slice(start, end) | 返回子 Buffer(共享内存) |
编码转换示例
const buf = Buffer.from('Node.js 编程', 'utf8');
console.log('UTF-8 长度:', buf.length); // 13 字节(中文占 3 字节)
console.log('Base64:', buf.toString('base64'));
console.log('Hex:', buf.toString('hex'));
// 修改内容
buf[0] = 0x4d; // 'M' 的 ASCII
console.log(buf.toString()); // 'Mode.js 编程'
练习提示
在右侧代码中,尝试创建一个 8 字节的 Buffer,依次写入一个 32 位整数(0x12345678)和两个 16 位整数(0xabcd, 0xef01)。然后使用 readUInt32BE 和 readUInt16BE 读取并验证结果。