我有一个十六进制字符串,如:
data = "437c2123"
我想根据ASCII表将此字符串转换为字符序列。 结果应该是:
data_con = "C|!#"
谁能告诉我怎么做?
答案 0 :(得分:38)
在Python2中
>>> "437c2123".decode('hex')
'C|!#'
在Python3中(也适用于Python2,对于< 2.6,你不能在字符串前面添加b
)
>>> import binascii
>>> binascii.unhexlify(b"437c2123")
b'C|!#'
答案 1 :(得分:18)
In [17]: data = "437c2123"
In [18]: ''.join(chr(int(data[i:i+2], 16)) for i in range(0, len(data), 2))
Out[18]: 'C|!#'
下面:
for i in range(0, len(data), 2)
遍历data
中的每一个位置:0
,2
,4
等。data[i:i+2]
查看每对十六进制数字'43'
,'7c'
等。chr(int(..., 16))
将这对十六进制数字转换为相应的字符。''.join(...)
将字符合并为一个字符串。答案 2 :(得分:-1)
从Python 2.6开始,您可以使用简单的:
data_con = bytes.fromhex(data)
答案 3 :(得分:-3)
ord
函数将字符转换为数值,而chr
函数则反转。因此,要将97
转换为"a"
,请执行ord(97)