getUint16()的正确使用

问题描述 投票:0回答:1

如何根据数据类型正确访问数据视图中的元素?

考虑以下示例代码:

const data = new Uint16Array([7, 12, 100]);
const view = new DataView(data.buffer);

console.log(view.getUint16(0), view.getUint16(1), view.getUint16(3));

输出为

1792 12 100
。第一个元素是错误的,并且其他元素偏移量不是 16 位类型所建议的 2 的倍数。使用
view.getUint8(0)
会输出
7

使用

.getTYPE()
访问数据视图中的元素的正确方法是什么?

真正的用例是一个二进制文件,它作为混合大小值的

ArrayBuffer
读入。

javascript binary arraybuffer
1个回答
1
投票

您在

getUint16
调用中使用了错误的偏移量。偏移量基于数据类型,在本例中为 16。16 位是 2 个字节,因此每个 16 位整数的偏移量应以 2 为增量。

请注意,

getTYPE
方法有第二个参数,它指定字节顺序,无论是大端还是小端。大多数时候你会想要使用小端,这需要你传递
true
作为第二个参数。

const data = new Uint16Array([7, 12, 100]);
const view = new DataView(data.buffer);

console.log(view.getUint16(0, true));
console.log(view.getUint16(2, true));
console.log(view.getUint16(4, true));

© www.soinside.com 2019 - 2024. All rights reserved.