According to MSDN我可以通过3种方式创建Uint32Array
:
new Uint32Array( length );
new Uint32Array( array );
new Uint32Array( buffer, byteOffset, length );
第一种和第二种方法效果很好,但第三种方法对我不起作用。这段代码有什么问题?
var buffer = new ArrayBuffer(8);
var uint32s = new Uint32Array(buffer, 4, 4);
uint32s[0] = 0x05050505;
var uint8s = new Uint8Array(buffer);
for (var i =0; i< 8; i++)
{
alert(uint8s[i]);
}
这很好,但当然byteOffset = 0
。
var uint32s = new Uint32Array(buffer);
答案 0 :(得分:6)
这里的文档似乎不正确,因为length
不是一个字节数,而是Uint32Array
将包含的32位整数的数量。
展览A
将代码更改为var uint32s = new Uint32Array(buffer, 4, 1);
有效。
图表B
documentation for Uint32Array on MDN表示length
是项目数,而不是字节数。
图表C
让构造函数接受 bytes 中的长度并没有多大意义。如果length
不是4的倍数会怎么样?