如何将十六进制列表附加到一个十六进制数字

时间:2014-03-05 16:54:39

标签: python python-2.7

我有一个像这样的十六进制字节字符串列表

['0xe1', '0xd7', '0x7', '0x0']

(从二进制文件中读取)

我想翻转列表并将列表附加在一起以创建一个十六进制数字

['0x07D7E1']

如何将列表格式化为此格式?

1 个答案:

答案 0 :(得分:3)

将十六进制数字连接成一个字符串:

'0x' + ''.join([format(int(c, 16), '02X') for c in reversed(inputlist)])

这确实在输出中明确包含00字节:

>>> inputlist = ['0xe1', '0xd7', '0x7', '0x0']
>>> '0x' + ''.join([format(int(c, 16), '02X') for c in reversed(inputlist)])
'0x0007D7E1'

但是,我会更好地阅读您的二进制文件格式;例如,使用struct将文件中的字节直接从文件解压缩为正确的整数:

>>> import struct
>>> bytes = ''.join([chr(int(c, 16)) for c in inputlist])
>>> value = struct.unpack('<I', bytes)[0]
>>> print hex(value)
0x7d7e1