我有一个十六进制字符串:
data = "437c2123"
我希望将此字符串转换为符合ASCII表的字符序列。
结果应该像这样:data_con = "C|!#"
有人能告诉我怎么做吗?
在Python2中
>>> "437c2123".decode('hex')
'C|!#'
在Python3中(对于Python2也适用,但是<2.6版本不能在字符串前加b
前缀)
>>> import binascii
>>> binascii.unhexlify(b"437c2123")
b'C|!#'
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(...)
将字符合并为单个字符串。自 Python 2.6 开始,您可以使用简单的:
data_con = bytes.fromhex(data)
ord
函数将字符转换为数字值,而chr
函数则执行相反的操作。因此,要将97
转换为"a"
,请执行ord(97)
。