【发布时间】:2020-06-22 19:31:14
【问题描述】:
我正在尝试将十六进制字符串列表转换为 little-endian 格式。
代码:
hex = ['1A05','1A05','1A05']
endian = int(str(hex),16)
print(endian)
但是,它不起作用并抛出错误:
ValueError: int() 基数为 16 的无效文字:
我期待:
[1306, 1306, 1306]
如果我写的话很有趣:
endian = int('1A05',16)
我没有收到错误并返回
6661
但这是将'1A05' 解释为大端的结果。我期待得到 1306 (0x051A) 结果。
【问题讨论】:
-
您得到第一个错误,因为您正在尝试将列表的字符串表示形式转换为整数。
-
@mkrieger1 我认为他的意思是将十六进制字节视为大端的结果,他希望将
1A05解析为051A -
@Barmar 是的,我现在知道了。我确定以前有人问过这个问题,但我还没有找到好的副本。
-
正确的方法包括两个步骤:(1)将十六进制字符串解析为
bytes(duplicate #1); (2) 将bytes转换为整数,指定小端字节序(duplicate #2)。 -
正如@mkrieger1 指出的那样,您有两个问题。使用他提供的链接解决这两个问题。
标签: python hex endianness