我有一个十六进制字符串,如:
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)