Python从十六进制字节创建数组

时间:2013-06-27 07:54:35

标签: python arrays string hex

我有以下字符串:

"0c a8 f0 d6 02 00 00 00 00 d0 1c d1 10 d2 00 d3 00 d7 01 d4 78 20 ff"

如您所见,它包含十六进制值,我想将其转换为一个字节数组,使用Python 2.4.4 (非3.x,所以我没有用bytearray)。根据我的知识实现它的唯一方法是:

i = []
i.append(0x0c)
i.append(0xa8)
i.append(0xf0) # ... and so on
.....
z = ''.join(chr(c) for c in i)

但这太可怕了。任何好的提示如何有效地解决这个问题?

2 个答案:

答案 0 :(得分:3)

'0c a8 f0 d6 02 00 00 00 00 d0 1c d1 10 d2 00 d3 00 d7 01 d4 78 20 ff'.replace(' ', '').decode('hex')

答案 1 :(得分:1)

您可以解码替换所有空格的字符串

s = "0c a8 f0 d6 02 00 00 00 00 d0 1c d1 10 d2 00 d3 00 d7 01 d4 78 20 ff"
x = s.replace(" ", "").decode('hex')

或者您可以使用生成器语句,例如

x = ''.join(chr(int(i, 16)) for i in  s.split())