当前位置: 首页 > news >正文

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 可通过索引直接修改字节值,进而改变最终转换的字符串
http://www.lryc.cn/news/607363.html

相关文章:

  • 嵌入式第十七课!!!!位运算!!!
  • 考取锅炉司炉工证需要学习哪些专业知识?
  • Linux 用户与组管理:从配置文件到实操命令全解析
  • golang的函数
  • YOLO V11 + BotSort行人追踪定位项目
  • 风光储并离网切换仿真模型(下垂控制一次调频)
  • 详解K8s集群搭建:从环境准备到成功运行
  • 【问题思考总结】CART树如何剪枝?从CART树的生成到剪枝以及为什么CTt一定小于Ct?【图文】
  • 在多租户或多服务共享 Redis 时,如何做逻辑隔离或权限控制?
  • 【数据结构】-----排序的艺术画卷
  • ESD监控系统确保工厂生产设备的静电安全
  • 浏览器【详解】内置Observer(共五种,用于前端监控、图片懒加载、无限滚动、响应式布局、生成安全报告等)
  • cesium FBO(四)自定义相机渲染到Canvas(离屏渲染)
  • 开源工具FossFLOW,绘制技术图表
  • 嵌入式GPU图像渲染工具全景实用指南(i.MX8MP平台)
  • Python深度解析与爬虫进阶:从理论到企业级实践
  • ubuntu 镜像克隆
  • Git 实现原理剖析
  • 【编号394】阿姆河流域土地利用分布数据(1990-2015)
  • 智能问数系统的调研
  • 【工具分享】模拟接口请求响应的Chrome插件ModResponse
  • 什么是doris
  • 第七章 愿景12 小萍分享《人性的弱点》
  • 软件性能优化:善用80-20法则,精准突破瓶颈
  • grafana/lock-stack 日志 Pipeline 配置
  • 前端渲染三国杀:SSR、SPA、SSG
  • npm报错:npm install 出现“npm WARN old lockfile”
  • 工程化(二):为什么你的下一个项目应该使用Monorepo?(pnpm / Lerna实战)
  • R 语言文件读写、批量读取与图片保存实用代码汇总
  • 逻辑回归参数调优实战指南