我需要将一些 little endian 十六进制格式的元组转换为 integer 格式,我该怎么做?
示例:
myTuple = ['0xD4', '0x51', '0x1', '0x0']
我需要将其转换为integer
(86484
)。
答案 0 :(得分:6)
只需使用hex_string
将int
转换为int(hex_string, 16)
,然后使用struct
lib将4个字节合并为一个big int
:
import struct
myTuple = ['0xD4', '0x51', '0x1', '0x0']
myResult = struct.unpack("<I", bytearray((int(x, 16) for x in myTuple)))
print(myResult[0])
<
是字节序,I
是大整数(4字节)
答案 1 :(得分:2)
在python2上,使用int.frombytes
int.from_bytes(bytearray((int(x, 16) for x in myTuple)), byteorder='little')
# 86484
或者在将每个值移位后明确地求和
sum(int(e, 16) << (i * 8) for i,e in enumerate(myTuple))
# 86484
或使用reduce
from functools import reduce # only for python3
reduce(lambda x, y: (x<<8) + int(y,16), [0]+myTuple[::-1])
# 86484