我有一些二进制数据在一个文件中读取(十六进制):
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
方法。