UInt16Array 未按预期工作(顺序错误)
UInt16Array not working as expected (wrong order)
我正在读取的文件中有一些二进制数据(十六进制):
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.
文件(数据格式)的 endianness 与处理器的不同。
如果您关心字节序(如果您读取或写入要在不同平台上使用的文件,您确实关心),请不要对每个索引使用 Uint16Array
that always uses the platform byte order, use a DataView
instead and call the getUint16
方法。
我正在读取的文件中有一些二进制数据(十六进制):
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.
文件(数据格式)的 endianness 与处理器的不同。
如果您关心字节序(如果您读取或写入要在不同平台上使用的文件,您确实关心),请不要对每个索引使用 Uint16Array
that always uses the platform byte order, use a DataView
instead and call the getUint16
方法。