将Hex数组转换为String

时间:2012-07-10 15:19:49

标签: python

我需要转换此数组

data = [
#SHO
0x56, 0x0d, 
#CMD
0x1, 0x00, 0x00, 0x00, 
#ARG
0x1, 0x0,
#SIZE
0x02, 0x00, 0x00, 0x00, 
#OPAQUE
0x01, 0x02,
#RESERVED
0x00, 0x00
]

并生成一个字符串

# converted data into s
print s

3 个答案:

答案 0 :(得分:4)

你的意思是把它作为字节串读取吗?

print bytearray(data)

答案 1 :(得分:3)

In [16]: ''.join(str(i) for i in data)
Out[16]: '861310001020001200'

或(根据@ thg435的建议)使用chr()代替str()

In [25]: ''.join(chr(i) for i in data)
Out[25]: 'V\r\x01\x00\x00\x00\x01\x00\x02\x00\x00\x00\x01\x02\x00\x00'

这是你在找什么?如果没有,你能提供所需的输出吗?

答案 2 :(得分:0)

(由于问题含糊不清,因此结合当前的帖子。)

以十六进制打印字节:

>>> ''.join(('%2s' % hex(d)[2:]).replace(' ', '0') for d in data)
'560d0100000001000200000001020000'

将字节打印为十进制:

>>> ''.join(str(i) for i in data)
'861310001020001200'

将字节打印为字符:

>>> print bytearray(data)
☺   ☺ ☻   ☺☻

或等效地:

>>> print ''.join(map(chr, data))
☺   ☺ ☻   ☺☻