Javascript类型化数组和字节序
- 论坛
- Javascript类型化数组和字节序
12 浏览
Javascript类型化数组和字节序
我正在使用WebGL来渲染一个二进制编码的网格文件。这个二进制文件以大端格式被写入(我可以通过在十六进制编辑器中打开文件或使用Fiddler查看网络流量来验证这一点)。当我尝试使用Float32Array或Int32Array来读取二进制响应时,二进制被解释为小端格式,导致我的值错误:
// 将缓冲区中的前32位解释为整数 var wrongValue = new Int32Array(binaryArrayBuffer)[0];
我在http://www.khronos.org/registry/typedarray/specs/latest/中找不到有关类型数组默认字节序的参考资料,所以我想知道怎么回事?当使用类型数组读取二进制数据时,我应该假设所有二进制数据都是小端格式吗?
为了解决这个问题,我可以使用一个DataView对象(在上面的链接中讨论),并调用:
// 将缓冲区中的前32位解释为整数 var correctValue = new DataView(binaryArrayBuffer).getInt32(0);
DataView的函数(如"getInt32")默认读取大端格式的值。
(注意:我已经在Google Chrome 15和Firefox 8上进行了测试,它们的行为都一样)