为什么会这样:
var myArrayBuffer = fs.readFileSync(file, null)
返回一个uInt8数组而不仅仅是一个arrayBuffer?为什么这似乎有效?
var myArrayBuffer = fs.readFileSync(file, null).buffer;
var myAArray = new Uint16Array( myArrayBuffer.slice(266,(sizeofArray*sizeOfArrayElement));
为什么fs.readFile会将我的文件解析为uInt8数组?没意思,该文件有一堆不同的数据类型,长度不是1个字节。
答案 0 :(得分:3)
因为v3.0.0 Buffer
类继承自Uint8Array
类。引用the doc:
Buffer
个实例也是Uint8Array
个实例。但是,与ECMAScript 2015中的TypedArray
规范存在微妙的不兼容性。例如,当ArrayBuffer#slice()
创建切片的副本时,Buffer#slice()
的实现会创建现有Buffer
的视图。 1}}无需复制,使Buffer#slice()
更有效率。 [...]有可能 创建一个新的
Buffer
,它与a共享相同的分配内存 使用TypedArray
对象TypeArray
属性的.buffer
实例。
......这正是你的例子所做的。