Firefox操作系统模拟器中的Uint8Array/Uint16Array转换是否已中断
Is Uint8Array / Uint16Array conversion broken in Firefox OS simulator?
如果我只是个傻瓜,我会很高兴的。:)
这是我的代码:
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]);
这是我得到的输出:
[02:56:32.197] 2
[02:56:32.197] 1
[02:56:32.197] 2
[02:56:32.197] 3
[02:56:32.197] 4
从我期望的文档来看:
2
513
1027
在实际项目中,我使用的是一个tar库,它提供了一个ArrayBuffer,其中包含我想要读取的16位数据,但我总是只能访问8位值。
我的期望错了吗?至少我是这样读的"使用复杂的数据结构"一节的https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays
记录:Firefox是23.0.1,Java是Platform SE 7 U25 10.25.2.17,Firefox操作系统模拟器是W7/64机器上的5.0pre3。
var t8 = new Uint8Array([1, 2, 3, 4]), t16 = new Uint16Array(t8);
这样,Uint16Array
构造函数将像对待普通数组一样对待t8
(就像Uint8Array
处理数组文字一样),并将构造元素复制到的新数组(缓冲区)。
要在同一个ArrayBuffer
上创建ArrayBufferView
,您需要将该缓冲区传递给构造函数:
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]);
相关文章:
- 如何在JavaScript中将字符串转换为函数引用
- 如何在Javascript中将JSon对象转换为数组
- 使用JS将数组转换为json对象
- 如何使用json将对象列表从java转换为javascript
- 偶尔结结巴巴地说“;堆叠的”;translate()上的转换(v4.0.0-alpha40)
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- 在Javascript中转换对象数组
- 将数字转换为一定数量的硬币
- 将纯文本URL转换为可单击链接
- 当图像转换为本地存储的DataURL时,EXIF被删除
- 如何使用js将SNAPSHOT内部版本号转换为3位数的整数
- 如何将TypeScript对象转换为普通对象
- 检测个位数整数时正在转换毫秒
- 从javascript到jquery的转换
- DOM事件通过JSON转换为java
- 将圆柱体转换为弯管
- 混合 ui-sref 和 $state.go 在 Angular ui-router 中进行状态转换
- JavaScript代码问题:我正在将对象转换为数组
- 如何将字母转换为二进制代码
- Firefox操作系统模拟器中的Uint8Array/Uint16Array转换是否已中断