Buffer、ArrayBuffer及DataView之间的转换
Buffer
是Nodejs提供的可以直接操作二进制数据的类
ArrayBuffer
是符合ES标准的
用来表示通用的、固定长度的原始二进制数据缓冲区,是一个字节数组,可读但不可直接写
注:
ArrayBuffer对象并没有提供任何读写内存的方法,但允许在其上方建立DataView,从而插入与读取内存中的数据
DataView
是一个可以从 ArrayBuffer 对象中读写多种数值类型的底层接口
类型有
Int8Array:8位有符号整数,长度1个字节 Uint8Array:8位无符号整数,长度1个字节 Int16Array:16位有符号整数,长度2个字节 Uint16Array:16位无符号整数,长度2个字节 Int32Array:32位有符号整数,长度4个字节 Uint32Array:32位无符号整数,长度4个字节 Float32Array:32位浮点数,长度4个字节 Float64Array:64位浮点数,长度8个字节
1.buffer 转 Uint8Array
var buffer = Buffer.from('hello,world');
var arraybuffer = new Uint8Array(buffer);
console.log(arraybuffer);
Uint8Array(11) [
104, 101, 108, 108,
111, 44, 119, 111,
114, 108, 100
]
2.Uint8Array 转 ArrayBuffer
var buffer = Buffer.from('hello,world');
var array = new Uint8Array(buffer);
var arraybuffer = array.buffer;
console.log(arraybuffer);
ArrayBuffer {
[Uint8Contents]: <68 65 6c 6c 6f 2c 77 6f 72 6c 64>,
byteLength: 11
}
3. ArrayBuffer转 Buffer
var buffer = Buffer.from('hello,world');
var array = new Uint8Array(buffer);
var arraybuffer = array.buffer;
var buffer1 = Buffer.from(arraybuffer);
console.log(buffer1);
<Buffer 68 65 6c 6c 6f 2c 77 6f 72 6c 64>
4.ArrayBuffer转 DataView
var buffer = Buffer.from('hello,world'); var array = new Uint8Array(buffer); var arraybuffer = array.buffer; var view = new DataView(arraybuffer); console.log(view);
5.DataView转ArrrayBuffer
var buffer = Buffer.from('hello,world'); var array = new Uint8Array(buffer); var arraybuffer = array.buffer; var view = new DataView(arraybuffer); var buffer1 = view.buffer; console.log(buffer1);
ArrayBuffer {
[Uint8Contents]: <68 65 6c 6c 6f 2c 77 6f 72 6c 64>,
byteLength: 11
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2019-11-13 RabbitMQ使用及与spring boot整合