Buffers和类型数组
在以下的注意事项下,从一个 Buffer 里创建一个新的类型数组(TypedArray)也是有可能的:
将 Buffer 对象的内存以不共享的方式拷贝到这个类型数组(TypedArray)中。
将 Buffer 对象的内存解释执行为一个不同元素的数组,并且不是目标类型的字节数组。这就像,
new Uint32Array(Buffer.from([1,2,3,4]))
创建了一个4元素的Uint32Array
的包含元素[1,2,3,4]
,而不是 包含一个单一的元素[0x1020304]
或[0x4030201]
。
请注意,当通过类型数组的 .buffer
属性创建一个 Buffer 时,有可能只能通过传入 byteOffset
和 length
参数使用底层类型数组的一部分。
const buf = Buffer.from(arr.buffer, 0, 16);
console.log(buf.length);
Buffer.from()
和 TypedArray.from() (如,Uint8Array.from()
)有着不同的签名和实现。具体而言,类型数组的变种接受第二参数,在类型数组的每个元素上调用一个映射函数。
但 Buffer.from()
不支持使用一个映射函数: