Mar*_*kus 12 javascript typed-arrays
我想读取一个二进制文件,在字节偏移31处有几个32位浮点值.
不幸的是,new Float32Array(buffer, 31, 6);不起作用.偏移量为32而不是31,但我需要31.
根据此页面,偏移量必须是元素大小的倍数,在这种情况下为4.
我对这种行为背后的原因感兴趣.为什么视图开始的位置很重要?
到目前为止我找到的最好的解决方法还没有成为壁虎,所以我不能使用它.
我是否真的必须将字节值剪切并复制到新数组中以获取浮点值?
我对这种行为背后的原因感兴趣.为什么视图开始的位置很重要?
某些体系结构不允许未对齐的字访问,并且在允许诸如x86之类的体系结构上存在性能损失(尽管某些指令必须对齐).
我是否真的必须将字节值剪切并复制到新数组中以获取浮点值?
是的,就像Markus的例子一样,你应该创建一个ArrayBuffer带有UInt8Array视图和Float32Array视图的新视图read_buffer(带有UInt8Array视图的副本和视图中的解释Float32Array).然后,您可以使用a将数据UInt8Array复制到read_buffer视图中,然后使用Float32Array.这是一个非常无缝的过程.