Javascript Firefox操作系统模拟器中的Uint8Array/Uint16Array转换是否中断?

Javascript Firefox操作系统模拟器中的Uint8Array/Uint16Array转换是否中断?,javascript,firefox,firefox-os,Javascript,Firefox,Firefox Os,如果我只是个傻瓜,我很乐意告诉她 这是我的密码: var t16 = new Uint16Array( new Uint8Array([1, 2, 3, 4])); console.log(t16.BYTES_PER_ELEMENT); for( var i = 0; i < t16.length; i++) console.log(t16[i]); 从文档中,我希望: 2 513 1027 在实际项目中,我使用的是一个tar库,它提供了一个ArrayBuffer,其中包含我

如果我只是个傻瓜,我很乐意告诉她

这是我的密码:

var t16 = new Uint16Array( new Uint8Array([1, 2, 3, 4]));
console.log(t16.BYTES_PER_ELEMENT);
for( var i = 0; i < t16.length; i++) 
    console.log(t16[i]);
从文档中,我希望:

2
513
1027
在实际项目中,我使用的是一个tar库,它提供了一个ArrayBuffer,其中包含我想要读取的16位数据,但我总是只能访问8位值

我的期望错了吗?至少我是这样读《使用复杂数据结构》一节的

记录如下:Firefox是23.0.1,Java是平台SE7U2510.25.2.17,Firefox操作系统模拟器是W7/64机器上的5.0pre3

这样,将像对待普通数组一样对待
t8
(就像
Uint8Array
处理数组文字一样),并将构造一个新的数组(缓冲区),将元素复制到该数组中

要在同一块上创建缓冲区,需要将该缓冲区传递到构造函数中:

var t8=new Uint8Array([1, 2, 3, 4]),
    t16 = new Uint16Array( t8.buffer );
//                           ^^^^^^^
console.log(t16.byteLength/t16.length); // or: t16.constructor.BYTES_PER_ELEMENT
for (var i = 0; i < t16.length; i++)
    console.log(t16[i]);
var t8=新的Uint8Array([1,2,3,4]),
t16=新的UINT16阵列(t8.buffer);
//                           ^^^^^^^
console.log(t16.bytellength/t16.length);//或:t16.constructor.BYTES\u PER\u元素
对于(变量i=0;i
太棒了!就这样。非常感谢。请注意,在一台小型endian机器上,您只能得到513和1027(在修复以通过.buffer之后)。在big endian机器上,您将得到258和772。
var t8 = new Uint8Array([1, 2, 3, 4]),
    t16 = new Uint16Array(t8);
var t8=new Uint8Array([1, 2, 3, 4]),
    t16 = new Uint16Array( t8.buffer );
//                           ^^^^^^^
console.log(t16.byteLength/t16.length); // or: t16.constructor.BYTES_PER_ELEMENT
for (var i = 0; i < t16.length; i++)
    console.log(t16[i]);