关于从缓冲区创建类型化数组的问题,来自节点 docs:
缓冲区的内存被解释为一个数组,而不是字节数组。也就是说,
new Uint32Array(new Buffer([1,2,3,4]))
创建了一个包含元素[1,2,3,4]
的 4 元素Uint32Array
,而不是一个只有单个元素[0x1020304]
或[0x4030201]
的Uint32Array
。
这与普通 JavaScript 不同,在其中从 ArrayBuffer 创建类型化数组视图会将 ArrayBuffer 的内存作为字节使用(类似于 C++ 中的 reinterpret_cast
)。在操作节点缓冲区时,我需要这种行为。
buf.readUInt32LE(i*4)
其中i
是数组索引? - stdob--read*
方法非常慢。 - ZachBvar k = i*4; return buf[k] | buf[k+1]<<8 | buf[k+2]<<16 | buf[k+3]<<256;
- stdob--buffer.js
模块 - 这正是实现读取的方式。 - stdob--