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

nodejs入门教程9:nodejs Buffer

一、Buffer的基本概念

  • 定义:Buffer是Node.js中的一个全局对象,用于处理二进制数据流。它类似于数组,但可以存储不同类型的数据(例如整数、浮点数、字符串等),并且每个元素的大小为1字节(byte)。
  • 用途:Buffer在Node.js中的应用非常广泛,如处理网络流、文件操作、加密算法等。它是Node.js处理二进制数据的重要工具。

二、Buffer的创建方式

  • Buffer.alloc(size[, fill[, encoding]]):分配一个指定大小的Buffer实例,并可选地用指定的值填充。如果未指定fill,则默认填充为0。
  • Buffer.allocUnsafe(size):分配一个指定大小的Buffer实例,但不会将其初始化为零。因此,新创建的Buffer实例可能会包含旧数据,使用时需要注意安全性。
  • Buffer.from(array):通过一个字节数组创建一个新的Buffer实例。
  • Buffer.from(string[, encoding]):创建一个包含字符串的Buffer实例,encoding表示字符串的字符编码。如果未指定encoding,则默认为’utf8’。
  • Buffer.from(buffer):复制传入的Buffer实例的数据,并返回一个新的Buffer实例。

三、Buffer的常用方法

  • buf.length:返回Buffer的长度。
  • buf.toString([encoding[, start[, end]]]):根据指定的编码将Buffer转换为字符串。start和end参数用于指定要转换的Buffer范围。
  • buf.write(string[, offset[, length]][, encoding]):将字符串写入Buffer。offset是开始写入的索引值,length是要写入的字节数,encoding是使用的编码。
  • buf.toJSON():返回Buffer的JSON表示。
  • buf.copy(target[, targetStart[, sourceStart[, sourceEnd]]]):将Buffer的一部分复制到另一个Buffer。
  • buf.fill(value[, offset[, end]][, encoding]):用指定值填充Buffer。
  • buf.equals(otherBuffer):检查两个Buffer是否相等。
  • buf.compare(otherBuffer):比较两个Buffer的字节顺序。

四、Buffer与字符串的相互转换

  • 字符串转Buffer:可以使用Buffer.from(string[, encoding])方法将字符串转换为Buffer。
  • Buffer转字符串:可以使用buf.toString([encoding[, start[, end]]])方法将Buffer转换为字符串。

五、Buffer的应用场景

  • 文件操作:在读取或写入文件时,Node.js会将文件内容作为Buffer对象处理。
  • 网络通信:在网络通信中,Node.js使用Buffer来发送和接收二进制数据。
  • 加密算法:在处理加密算法时,Buffer用于存储和操作二进制密钥和数据。

六、Buffer的安全注意事项

  • 使用Buffer.allocUnsafe()创建的Buffer实例可能包含旧数据,因此在使用前需要确保其内容是安全的。
  • 在处理来自不可信源的Buffer数据时,要格外小心,以避免潜在的安全风险。

七、Buffer的示例代码

以下是一个简单的示例代码,演示了如何创建、操作和使用Buffer:

// 创建一个长度为10的Buffer,并用0填充
const buf1 = Buffer.alloc(10);
console.log(buf1); // <Buffer 00 00 00 00 00 00 00 00 00 00>

// 创建一个包含字符串"hello"的Buffer
const buf2 = Buffer.from('hello');
console.log(buf2.toString()); // hello

// 使用write方法向Buffer写入数据
buf1.write('Node.js', 0, 6, 'utf8');
console.log(buf1.toString('utf8', 0, 6)); // Node.js

// 将Buffer转换为JSON对象
const json = JSON.stringify(buf2);
console.log(json); // {"type":"Buffer","data":[104,101,108,108,111]}

// 将JSON对象转换回Buffer
const buf3 = Buffer.from(JSON.parse(json).data);
console.log(buf3.toString()); // hello

通过掌握Buffer的创建和使用方法,可以更好地处理Node.js中的二进制数据。


http://www.kler.cn/a/378155.html

相关文章:

  • C#+OpenCv深度学习开发(常用模型汇总)
  • KingbaseES(金仓数据库)入门学习
  • 第一次面试到第一份offer的经历分享
  • Python从0到100(七十八):神经网络--从0开始搭建全连接网络和CNN网络
  • 文件操作(File类)
  • Activiti开启流程实例
  • Vue学习笔记(十一)
  • Unity的gRPC使用之实现客户端
  • 基于统计方法的语言模型
  • kubesphere jenkins自动重定向 http://ks-apiserver:30880/oauth/authorize
  • 开源库 FloatingActionButton
  • new/delete和malloc()/free()的区别及其使用
  • 无人机航拍铁路障碍物识别图像分割系统:创新焦点发布
  • 将分类标签转换为模型可以处理的数值格式
  • Android 蓝牙连接 HID 设备
  • 【RAG】自动化RAG框架-“AutoML风”卷到了RAG?
  • 基于Android13源码分析Launcher启动
  • java多线程编程(二)一一>线程安全问题, 单例模式, 解决程线程安全问题的措施
  • FRAMES数据集:由谷歌和哈佛大学 联合创建一个综合评估数据集,目的测试检索增强生成系统在事实性、检索准确性和推理方面的能力
  • .card ~ img { width: 100%; height: 100%; object-fit: cover; }
  • git入门教程12:git命令与技巧
  • 论 ONLYOFFICE:开源办公套件的深度探索
  • PyTorch实战-手写数字识别-CNN模型
  • 【已解决,含泪总结】Ubuntu18.04下非root用户Anaconda3卸载重装,conda install终于不再报错
  • 可编辑31页PPT | 智慧业务中台规划建设与应用总体方案
  • 大厂面试真题-MVCC有哪些不好