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);
最佳答案
此处的文档似乎不正确,因为length
不是字节数,而是Uint32Array
将包含的32位整数。
展览
将代码更改为var uint32s = new Uint32Array(buffer, 4, 1);
即可。
展览B
documentation for Uint32Array on MDN表示length
是项的计数,而不是字节。
展览C
让构造函数接受一个以字节为单位的长度并没有任何意义。如果length
不是4的倍数应该怎么办?
关于javascript - Uint32Array(buffer,byteOffset,length)不能按预期工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8419865/