全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-15 8 分钟 ✍️ juanwangdev

Node.js Buffer 缓冲区

Buffer 是 Node.js 处理二进制数据流的核心对象,类似于整数数组,用于处理 TCP 流、文件操作等。

创建 Buffer

JavaScript
// 指定长度创建
const buf1 = Buffer.alloc(10);        // 分配 10 字节,填充 0
const buf2 = Buffer.allocUnsafe(10);  // 分配 10 字节,不初始化(更快但可能含旧数据)

// 从字符串创建
const buf3 = Buffer.from('Hello');
const buf4 = Buffer.from('你好', 'utf8');

// 从数组创建
const buf5 = Buffer.from([1, 2, 3, 4, 5]);

Buffer 与字符串转换

JavaScript
const buf = Buffer.from('Hello World');

// 转换为字符串
console.log(buf.toString());           // 'Hello World'
console.log(buf.toString('utf8', 0, 5)); // 'Hello'

// 转换为 JSON
console.log(buf.toJSON());
// { type: 'Buffer', data: [72, 101, 108, 108, 111, ...] }

Buffer 操作

读写数据

JavaScript
const buf = Buffer.alloc(4);

// 写入数据
buf.write('Hi', 0, 'utf8');

// 读取单个字节
console.log(buf[0]);  // 72 (H 的 ASCII 码)
console.log(buf[1]);  // 105 (i 的 ASCII 码)

拼接 Buffer

JavaScript
const buf1 = Buffer.from('Hello ');
const buf2 = Buffer.from('World');
const buf3 = Buffer.concat([buf1, buf2]);

console.log(buf3.toString()); // 'Hello World'

比较 Buffer

JavaScript
const buf1 = Buffer.from('ABC');
const buf2 = Buffer.from('ABD');

console.log(buf1.compare(buf2)); // -1 (buf1 < buf2)
console.log(buf1.equals(buf2));  // false

常用方法

方法说明
Buffer.alloc(size)创建指定大小的 Buffer,填充 0
Buffer.from(data)从字符串/数组创建 Buffer
toString()转换为字符串
toJSON()转换为 JSON 对象
write(string)写入字符串
concat(list)拼接多个 Buffer
equals(other)比较两个 Buffer 是否相等
compare(other)比较 Buffer 大小

Buffer 的大小在创建时确定,无法动态调整。使用 Buffer.allocUnsafe 性能更高但可能包含敏感数据。

要点总结

  • Buffer 用于处理二进制数据,类似于整数数组
  • 推荐使用 Buffer.from() 和 Buffer.alloc() 创建 Buffer
  • toString() 和 toJSON() 用于转换为其他格式
  • Buffer 大小固定,创建后不可更改

📝 发现内容有误?点击此处直接编辑

← 上一篇 Node.js util 工具函数模块
下一篇 → Node.js __dirname
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库