Lra*_*tep 1 arrays binary strong-typing node.js
为什么是这样:
var myArrayBuffer = fs.readFileSync(file, null)
Run Code Online (Sandbox Code Playgroud)
返回一个 uInt8 数组而不是一个数组缓冲区?为什么这似乎有效?
var myArrayBuffer = fs.readFileSync(file, null).buffer;
var myAArray = new Uint16Array( myArrayBuffer.slice(266,(sizeofArray*sizeOfArrayElement));
Run Code Online (Sandbox Code Playgroud)
为什么 fs.readFile 会将我的文件解析为 uInt8 数组?没有意义,文件有一堆不同的数据类型,它们的长度不是 1 个字节。
因为自 v3.0.0Buffer类继承自Uint8Array类。引用文档:
Buffer实例也是Uint8Array实例。但是,与TypedArrayECMAScript 2015 中的规范存在细微的不兼容。例如,在ArrayBuffer#slice()创建切片的副本时,实现Buffer#slice()在Buffer不复制的情况下在现有视图上创建视图,从而Buffer#slice()提高了效率。[...]可以使用对象的属性创建一个
Buffer与TypedArray实例共享相同分配内存 的新TypeArray对象.buffer。
...这正是您的示例中所做的。