Node.js 中的 Buffer缓冲区实例详解

 更新时间:2025年04月17日 09:49:26   作者:傻小胖  
Buffer 是 Node.js 提供的用于处理二进制数据的类,在浏览器中我们可以使用 Blob 或 ArrayBuffer,但 Node 环境下使用 Buffer 更加高效和灵活,本文给大家介绍Node.js 中的 Buffer缓冲区,感兴趣的朋友一起看看吧

下面是关于 Node.js 中的 Buffer(缓冲区) 的系统总结,涵盖了定义、创建、读取修改、溢出处理、中文编码问题以及字符串转换等关键用法👇

🧱 一、什么是 Buffer?

Buffer 是 Node.js 提供的用于处理二进制数据的类。
在浏览器中我们可以使用 BlobArrayBuffer,但 Node 环境下使用 Buffer 更加高效和灵活。

Buffer 主要用于处理文件系统、网络传输中的数据。

✨ 二、创建 Buffer 的几种方式

// 1. 创建一个长度为 10 的 Buffer,初始值为 0
const buf1 = Buffer.alloc(10);
// 2. 创建未初始化的 Buffer(更快,但内容是旧数据,需手动填充)
const buf2 = Buffer.allocUnsafe(10);
buf2.fill(0); // 推荐立即填充
// 3. 使用数组初始化
const buf3 = Buffer.from([1, 2, 3]);
// 4. 使用字符串初始化(可指定编码)
const buf4 = Buffer.from('Hello'); // 默认 utf-8 编码
const buf5 = Buffer.from('你好', 'utf8');

🧪 三、读取和修改 Buffer 内容

const buf = Buffer.from('Node');
// 读取字节值(十进制 ASCII)
console.log(buf[0]); // 输出: 78,对应字符 N
// 修改值
buf[0] = 100; // 改为字符 d (ASCII 100)
console.log(buf.toString()); // "dode"

🚫 四、Buffer 溢出处理

Buffer 是固定长度的,不能自动扩容,超出会被截断或不生效:

const buf = Buffer.alloc(2);
buf.write('abcd');
console.log(buf.toString()); // 输出 ab,后面 cd 被截断

写入的数据超出长度时,只写入前面的部分。

🌏 五、Buffer 中文乱码问题处理

const buf = Buffer.from('你好', 'utf8');
console.log(buf); // <Buffer e4 bd a0 e5 a5 bd>
// 将 Buffer 转回中文字符串
console.log(buf.toString('utf8')); // 你好

⚠️ 中文字符占用多个字节(通常为 3 个),不能随意截取:

const cut = buf.slice(0, 2); // 截取不完整
console.log(cut.toString('utf8')); // 输出乱码

✅ 正确做法:用 iconv-lite 等库做中文切割或保留完整字节。

🔄 六、Buffer 与字符串的互相转换

// 字符串 => Buffer
const str = 'hello';
const buf = Buffer.from(str);
// Buffer => 字符串
const newStr = buf.toString('utf8'); // "hello"

编码可以是:utf8asciibase64hexlatin1

🔍 七、实用方法补充

方法说明
buf.length返回字节长度
buf.slice(start, end)截取部分 Buffer
buf.write(str, offset, length, encoding)写入字符串
Buffer.concat([buf1, buf2])合并多个 Buffer
Buffer.isBuffer(obj)判断是否是 Buffer

✅ 总结一句话

Buffer 是 Node 中用于处理二进制数据的核心模块,支持高效的创建、读取、写入和转换,尤其适用于网络传输和文件读写中。

需要我帮你出一个 Buffer 使用的实战示例(比如文件读取、TCP 收包等)也可以告诉我~

到此这篇关于Node.js 中的 Buffer缓冲区实例详解的文章就介绍到这了,更多相关node.js buffer 缓冲区内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 参考EventEmitter实现完整订阅发布功能函数

    参考EventEmitter实现完整订阅发布功能函数

    这篇文章主要为大家介绍了参考EventEmitter实现完整订阅发布功能函数示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • CentOS上安装Node.js和mongodb笔记

    CentOS上安装Node.js和mongodb笔记

    这篇文章主要介绍了CentOS上安装Node.js和mongodb笔记,本文讲解了Python安装、Node.js安装、npm安装、mongodb驱动安装、mongodb数据库操作测试代码等内容,需要的朋友可以参考下
    2015-04-04
  • Node.js中module.exports 和exports使用误区

    Node.js中module.exports 和exports使用误区

    本文主要介绍了Node.js中module.exports 和exports使用误区,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Node.js 中的 Buffer缓冲区实例详解

    Node.js 中的 Buffer缓冲区实例详解

    Buffer 是 Node.js 提供的用于处理二进制数据的类,在浏览器中我们可以使用 Blob 或 ArrayBuffer,但 Node 环境下使用 Buffer 更加高效和灵活,本文给大家介绍Node.js 中的 Buffer缓冲区,感兴趣的朋友一起看看吧
    2025-04-04
  • Node.js的进程管理的深入理解

    Node.js的进程管理的深入理解

    这篇文章主要介绍了Node.js的进程管理的深入理解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • 使用pkg打包Node.js应用的方法步骤

    使用pkg打包Node.js应用的方法步骤

    这篇文章主要介绍了使用pkg打包Node.js应用的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • 深入了解 Node的多进程服务实现

    深入了解 Node的多进程服务实现

    本文主要介绍了Node的多进程服务实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Node.js本地文件操作之文件拷贝与目录遍历的方法

    Node.js本地文件操作之文件拷贝与目录遍历的方法

    这篇文章主要介绍了Node.js本地文件操作之文件拷贝与目录遍历的方法,拷贝用到了Node的文件API,遍历则举了一个异步API实现的形式(Node的一大特点),需要的朋友可以参考下
    2016-02-02
  • 一文讲解如何把已安装的nodejs高版本降级为低版本

    一文讲解如何把已安装的nodejs高版本降级为低版本

    部分老旧项目需要使用低版本的node,网上很多是无效的,高版本无法直接安装低版本node,但是低版本nodejs可以安装部分高版本node,从而达到升级效果,下面这篇文章主要给大家介绍了关于如何把已安装的nodejs高版本降级为低版本的相关资料,需要的朋友可以参考下
    2024-06-06
  • node使用require mkdirp创建文件夹示例

    node使用require mkdirp创建文件夹示例

    这篇文章主要为大家介绍了node使用require mkdirp创建文件夹示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08

最新评论