• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

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

    发布者: 浪子 | 发布时间: 2025-6-16 07:39| 查看数: 67| 评论数: 0|帖子模式

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

    🧱 一、什么是 Buffer?
    1. Buffer
    复制代码
    是 Node.js 提供的用于处理二进制数据的类。
    在浏览器中我们可以使用
    1. Blob
    复制代码
    1. ArrayBuffer
    复制代码
    ,但 Node 环境下使用
    1. Buffer
    复制代码
    更加高效和灵活。
    1. Buffer 主要用于处理文件系统、网络传输中的数据。
    复制代码
    ✨ 二、创建 Buffer 的几种方式
    1. // 1. 创建一个长度为 10 的 Buffer,初始值为 0
    2. const buf1 = Buffer.alloc(10);
    3. // 2. 创建未初始化的 Buffer(更快,但内容是旧数据,需手动填充)
    4. const buf2 = Buffer.allocUnsafe(10);
    5. buf2.fill(0); // 推荐立即填充
    6. // 3. 使用数组初始化
    7. const buf3 = Buffer.from([1, 2, 3]);
    8. // 4. 使用字符串初始化(可指定编码)
    9. const buf4 = Buffer.from('Hello'); // 默认 utf-8 编码
    10. const buf5 = Buffer.from('你好', 'utf8');
    复制代码
    🧪 三、读取和修改 Buffer 内容
    1. const buf = Buffer.from('Node');
    2. // 读取字节值(十进制 ASCII)
    3. console.log(buf[0]); // 输出: 78,对应字符 N
    4. // 修改值
    5. buf[0] = 100; // 改为字符 d (ASCII 100)
    6. console.log(buf.toString()); // "dode"
    复制代码
    🚫 四、Buffer 溢出处理

    Buffer 是固定长度的,不能自动扩容,超出会被截断或不生效:
    1. const buf = Buffer.alloc(2);
    2. buf.write('abcd');
    3. console.log(buf.toString()); // 输出 ab,后面 cd 被截断
    复制代码
    1. 写入的数据超出长度时,只写入前面的部分。
    复制代码
    🌏 五、Buffer 中文乱码问题处理
    1. const buf = Buffer.from('你好', 'utf8');
    2. console.log(buf); // <Buffer e4 bd a0 e5 a5 bd>
    3. // 将 Buffer 转回中文字符串
    4. console.log(buf.toString('utf8')); // 你好
    复制代码
    1. ⚠️ 中文字符占用多个字节(通常为 3 个),不能随意截取:
    复制代码
    1. const cut = buf.slice(0, 2); // 截取不完整
    2. console.log(cut.toString('utf8')); // 输出乱码
    复制代码
    ✅ 正确做法:用
    1. iconv-lite
    复制代码
    等库做中文切割或保留完整字节。

    🔄 六、Buffer 与字符串的互相转换
    1. // 字符串 => Buffer
    2. const str = 'hello';
    3. const buf = Buffer.from(str);
    4. // Buffer => 字符串
    5. const newStr = buf.toString('utf8'); // "hello"
    复制代码
    1. 编码可以是:[code]utf8
    复制代码
    1. ascii
    复制代码
    1. base64
    复制代码
    1. hex
    复制代码
    1. latin1
    复制代码
    等[/code]
    🔍 七、实用方法补充

    方法说明
    1. buf.length
    复制代码
    返回字节长度
    1. buf.slice(start, end)
    复制代码
    截取部分 Buffer
    1. buf.write(str, offset, length, encoding)
    复制代码
    写入字符串
    1. Buffer.concat([buf1, buf2])
    复制代码
    合并多个 Buffer
    1. Buffer.isBuffer(obj)
    复制代码
    判断是否是 Buffer
    ✅ 总结一句话
    1. Buffer 是 Node 中用于处理二进制数据的核心模块,支持高效的创建、读取、写入和转换,尤其适用于网络传输和文件读写中。
    复制代码
    需要我帮你出一个 Buffer 使用的实战示例(比如文件读取、TCP 收包等)也可以告诉我~
    到此这篇关于Node.js 中的 Buffer缓冲区实例详解的文章就介绍到这了,更多相关node.js buffer 缓冲区内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    来源:https://www.jb51.net/javascript/339782l6o.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表