如何将一个十六进制数与十六进制列表合并
我有一个像这样的十六进制字节字符串列表
['0xe1', '0xd7', '0x7', '0x0']
(是从一个二进制文件中读取的)
我想把这个列表翻转过来,然后把它们拼接在一起,形成一个十六进制数字,
['0x07D7E1']
我该怎么把这个列表格式化成这个样子呢?
1 个回答
4
把你的十六进制数字合并成一个字符串:
'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