UInt16Array不按预期工作(顺序错误)



我有一些二进制数据在一个文件中读取(十六进制):

00 00 00 18 66 74 79 70

我读取文件并将其转换为arrayBuffer和Uint8Array和Uint16Array。

const arrayBuffer = await selectedFile.arrayBuffer()

const uint8Array  = new Uint8Array(arrayBuffer)
const uint16Array = new UInt16Array(arrayBuffer)  

Uint8Array的内容与预期一致:

Decimal        Hex
0: 0              0
1: 0              0
2: 0              0
3: 24             18   
4: 102            66
5: 116            74
6: 121            79
7: 112            70

但是在uint16Array中,这两个字节是翻转的.

Decimal        Hex          What I expected as Hex
0: 0              0            0
1: 6144           18 00        00 18
2: 29798          74 66        66 74
3: 28793          70 79        79 70

为什么这两个字节是翻转的?我该怎么做才能得到正确的顺序,例如,我需要搜索0x6674。

文件(数据格式)的端序与处理器的端序不同。

如果你关心端序(如果你读或写的文件要在不同的平台上使用),不要使用总是使用平台字节顺序的Uint16Array,而是使用DataView,并为每个索引调用getUint16方法。

相关内容

  • 没有找到相关文章

最新更新