15

我有一个十六进制字符串,如:

data = "437c2123"

我想根据 ASCII 表将此字符串转换为字符序列。结果应该是这样的:

data_con = "C|!#"

谁能告诉我该怎么做?

4

4 回答 4

38

在 Python2 中

>>> "437c2123".decode('hex')
'C|!#'

在 Python3 中(也适用于 Python2,对于 <2.6,您不能b为字符串添加前缀)

>>> import binascii
>>> binascii.unhexlify(b"437c2123")
b'C|!#'
于 2012-05-16T13:08:44.337 回答
20
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(...)将字符合并为一个字符串。
于 2012-05-16T12:35:45.990 回答
-1

从 Python 2.6 开始,您可以使用简单的:

data_con = bytes.fromhex(data)
于 2014-01-06T08:21:33.053 回答
-3

ord函数将字符转换为数值,而该chr函数则相反。所以要转换97"a", 做ord(97)

于 2012-05-16T12:36:03.000 回答