Node.js中Buffer的用法

复制代码
// Buffer 与字符串的转换示例
// Buffer 是 Node.js 中用于处理二进制数据的类,字符串与 Buffer 之间的转换是常见操作

// 1. 从字节数组创建 Buffer 并转换为字符串
// Buffer.from(array) 接收一个字节数值数组,创建对应的 Buffer
let buf_4 = Buffer.from([105, 108, 111, 101, 121, 111, 117]);
// 解释:数组中的每个数字代表一个 ASCII 码值
// 105 -> 'i', 108->'l', 111->'o', 101->'e', 121->'y', 111->'o', 117->'u'

// 将 Buffer 转换为字符串(默认使用 UTF-8 编码)
console.log(buf_4.toString()); 
// 输出结果:"iloveyou"
// 解释:Buffer 中的字节被解析为对应的字符,拼接后形成完整字符串


// 2. 从字符串创建 Buffer 并修改其中的字节
// Buffer.from(string) 从字符串创建 Buffer,存储字符串的 UTF-8 编码字节
let buf = Buffer.from('hello world');
// 解释:'hello world' 每个字符在 ASCII 中占 1 字节,共 11 字节

// 打印 Buffer 内容(以十六进制表示)
console.log(buf); 
// 输出结果:<Buffer 68 65 6c 6c 6f 20 77 6f 72 6c 64>
// 解释:每个十六进制值对应字符的 ASCII 码
// 68->'h', 65->'e', 6c->'l', 6c->'l', 6f->'o', 20->' ', 77->'w', 6f->'o', 72->'r', 6c->'l', 64->'d'

// 修改 Buffer 中索引为 0 的字节值(95 对应 ASCII 中的下划线 '_')
buf[0] = 95;

// 将修改后的 Buffer 转换为字符串
console.log(buf.toString()); 
// 输出结果:"_ello world"
// 解释:原字符串第一个字符 'h' 被替换为 '_',其他字符保持不变


// 3. 中文字符的 Buffer 存储特性
// 从中文字符串创建 Buffer(UTF-8 编码下中文通常占 3 字节)
let bufChinese = Buffer.from('你好');

// 打印中文对应的 Buffer 内容
console.log(bufChinese); 
// 输出结果:<Buffer e4 bd a0 e5 a5 bd>
// 解释:
// '你' 的 UTF-8 编码为 3 字节:e4 bd a0
// '好' 的 UTF-8 编码为 3 字节:e5 a5 bd
// 整个 Buffer 长度为 6 字节,体现了 UTF-8 编码对多字节字符的支持

核心知识点总结:

  1. Buffer 创建方式 :Buffer.from() 可接收数组、字符串等参数,创建对应的二进制缓冲区
  2. 编码特性 :
    • 英文字符、数字、符号通常在 UTF-8 中占 1 字节(与 ASCII 兼容)
    • 中文字符在 UTF-8 中通常占 3 字节
  3. 转换方法 :buf.toString() 可将 Buffer 转回字符串,默认使用 UTF-8 编码
  4. 字节操作:Buffer 可通过索引直接修改字节值,进而改变最终转换的字符串
相关推荐
king13598745501 小时前
AI Agent 端云协同选型:Node.js 任务成本算例与权限检查清单(2027—2028 展望)
人工智能·ai·node.js·ai agent
居里先生7525 小时前
PDF 批注到底存在文件的哪里?从 /Annots 讲到导出验证
node.js
2601_954005626 小时前
# ricon SVG 编辑器:工业图元的“军火工厂“
前端·物联网·数学建模·架构·编辑器·制造
dswfgds1 天前
开源项目吐槽大会:一篇技术文章的大纲设计
编辑器
MasonYyp1 天前
安装npm依赖仓库Verdaccio
前端·npm·node.js
golang学习记2 天前
VS Code Agents 新快捷键:一键穿梭主编辑器与Agent窗口
vscode·编辑器
编程的一拳超人2 天前
【元宝搜索开发者征文大赛】四语实战:Java/Python/Go/Node.js 构建 AI 搜索应用全攻略
java·python·golang·node.js·agent
FriendshipT2 天前
Vim 完整指南:从入门到高效编辑
linux·人工智能·编辑器·vim·1024程序员节
lucas_AI2 天前
今年 2 月就修好的漏洞,10 月才炸:HTTP2Shell 把 Node、Python 一锅端
node.js
.道阻且长.2 天前
Linux 基本开发工具:编辑器vim,配置vim
linux·运维·服务器·职场和发展·编辑器·vim·1024程序员节