我有一个像这样的十六进制字节字符串列表
['BB','A7','F6','9E'] (从文本文件中读取)
如何将该列表转换为此格式?
[0xBB,0xA7,0xF6,0x9E]
答案 0 :(得分:8)
[int(x, 16) for x in L]
答案 1 :(得分:4)
[0xBB, 0xA7, 0xF6, 0x9E]
与[187, 167, 158]
相同。所以没有特殊的“十六进制整数”形式等。
但您可以将十六进制字符串转换为整数:
>>> [int(x, 16) for x in ['BB', 'A7', 'F6', '9E']]
[187, 167, 246, 158]
答案 2 :(得分:4)
根据文本文件中的格式,可能更容易直接转换
>>> b=bytearray('BBA7F69E'.decode('hex'))
或
>>> b=bytearray('BB A7 F6 9E'.replace(' ','').decode('hex'))
>>> b
bytearray(b'\xbb\xa7\xf6\x9e')
>>> b[0]
187
>>> hex(b[0])
'0xbb'
>>>
一个bytearray很容易转换为列表
>>> list(b) == [0xBB, 0xA7, 0xF6, 0x9E]
True
>>> list(b)
[187, 167, 246, 158]
如果您想更改列表显示的方式,您需要自己制作列表
>>> class MyList(list):
... def __repr__(self):
... return '['+', '.join("0x%X"%x if type(x) is int else repr(x) for x in self)+']'
...
>>> MyList(b)
[0xBB, 0xA7, 0xF6, 0x9E]
>>> str(MyList(b))
'[0xBB, 0xA7, 0xF6, 0x9E]'