Javascript类型化数组和字节序

12 浏览
0 Comments

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上进行了测试,它们的行为都一样)

0