素材巴巴 > 程序开发 >

js中ArrayBuffer和node中Buffer的关系和区别

程序开发 2023-09-22 17:33:53

ArrayBuffer 对象用来表示通用的、固定长度的原始二进制数据缓冲区。

它是一个字节数组,通常在其他语言中称为“byte array”。你不能直接操作 ArrayBuffer 中的内容;而是要通过类型化数组对象或 DataView 对象来操作,它们会将缓冲区中的数据表示为特定的格式,并通过这些格式来读写缓冲区的内容。

ArrayBuffer用来表示二进制数据缓冲区。比如我们使用fs.readFileSync模块读取一个文件a.txt的时候,底层逻辑就是把a文件的内容,写入缓冲区;

然后执行fs.writefilesync的时候,底层逻辑就是,把缓冲区的内容读出来,写入文件b.txt中。

DataView 也可以用来操纵ArrayBuffer

DataView 视图是一个可以从 二进制ArrayBuffer 对象中读写多种数值类型的底层接口,使用它时,不用考虑不同平台的字节序问题。

  1. ArrayBuffer 用来标识二进制数据,不能直接用代码操纵
  2. js中可以用类型化数组TypedArray操纵ArrayBuffer
    1. TypedArray 是类型化数组(也叫做 定型数组),用来操纵 ArrayBuffer
    2. TypedArray 包含Uint8Array,Uint16Array等类型,也称为一种“视图”
    3. ArrayBuffer 是所有类型化数组和视图引用的基本单位

node 中的Buffer,和上述的TypedArray、DataView实际是一种东西,都是用来操纵ArrayBuffer的一种工具。

看到没,无论是js中的,TypeArray,还是DataView,还是node中的buffer,他们本质都是一种工具,都是用来给用户(开发者)展示二进制数据的一个工具,本质都是用来操纵ArrayBuffer的。

NodeJS中ArrayBuffer与Buffer的异同 - 知乎首发于 知乎问题 ‘ArrayBuffer 和 Buffer 有何区别?’ ArrayBuffer 和 Buffer 有何区别?首先说结论, ArrayBuffer [1] 对象用来表示通用的、固定长度的原始二进制数据缓冲区,是一个字节数组,可读但不可直接写…https://zhuanlan.zhihu.com/p/144381462


标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。