十六进制字符串到python中的字符

Ali*_*ice 15 python hex

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

data = "437c2123"
Run Code Online (Sandbox Code Playgroud)

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

data_con = "C|!#"
Run Code Online (Sandbox Code Playgroud)

谁能告诉我怎么做?

Joh*_*ooy 38

在Python2中

>>> "437c2123".decode('hex')
'C|!#'
Run Code Online (Sandbox Code Playgroud)

在Python3中(也适用于Python2,对于<2.6,你不能b在字符串前加上字符串)

>>> import binascii
>>> binascii.unhexlify(b"437c2123")
b'C|!#'
Run Code Online (Sandbox Code Playgroud)


NPE*_*NPE 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|!#'
Run Code Online (Sandbox Code Playgroud)

这里:

  • for i in range(0, len(data), 2)过在每一个第二位置迭代data:0,2,4等.
  • data[i:i+2]着眼于每一个对十六进制数字'43','7c'等等.
  • chr(int(..., 16)) 将这对十六进制数字转换为相应的字符.
  • ''.join(...) 将字符合并为单个字符串.