gpt4 book ai didi

javascript - Firefox OS 模拟器中的 Uint8Array/Uint16Array 转换是否中断?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:35:40 25 4
gpt4 key购买 nike

如果我只是愚蠢,我会很高兴她。 :)

这是我的代码:

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 库,它提供一个包含我想要读取的 16 位数据的 ArrayBuffer,但我总是只能访问 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 OS 模拟器在 W7/64 机器上是 5.0pre3。

最佳答案

var t8 = new Uint8Array([1, 2, 3, 4]),
t16 = new Uint16Array(t8);

这样 Uint16Array constructor会将 t8 视为普通数组(就像 Uint8Array 处理数组字面值一样),并将构造一个新数组(缓冲区),将元素复制到其中。

创建 ArrayBufferView同样ArrayBuffer ,您需要将该缓冲区传递给构造函数:

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 - Firefox OS 模拟器中的 Uint8Array/Uint16Array 转换是否中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18478042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com