Python 从字符串中打包的十六进制地址

Python hexidecimal address packing from string

这可以正常工作:

packed = struct.pack('<L',0x7c023a4f)

这不是:

address = '0x7c023a4f'
packed = struct.pack('<L',address)

我该怎么做? 我尝试了很多来自 binascii 库的方法,但我似乎无法弄明白。

您可以在打包之前使用 literal_eval 将字符串计算为十六进制数:

from ast import literal_eval
address = '0x7c023a4f'
packed = struct.pack('<L', literal_eval(address))

packed
# 'O:\x02|'

将其转换为整数:

address = '0x7c023a4f'
packed = struct.pack('<L', int(address, 16))