Python:将元组十六进制字符串转换为整数

时间:2018-07-10 08:56:00

标签: python type-conversion hex

我需要将一些 little endian 十六进制格式的元组转换为 integer 格式,我该怎么做?

示例:

myTuple = ['0xD4', '0x51', '0x1', '0x0']

我需要将其转换为integer86484)。

2 个答案:

答案 0 :(得分:6)

只需使用hex_stringint转换为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