【发布时间】:2015-05-15 20:18:25
【问题描述】:
我正在尝试将十六进制字符串解码为二进制值。 我在互联网上找到了以下命令来完成它,
string_bin = string_1.decode('hex')
但我说错了
'str' object has no attrubute 'decode'
我正在使用 python v3.4.1
【问题讨论】:
标签: python string python-3.x binary hex
我正在尝试将十六进制字符串解码为二进制值。 我在互联网上找到了以下命令来完成它,
string_bin = string_1.decode('hex')
但我说错了
'str' object has no attrubute 'decode'
我正在使用 python v3.4.1
【问题讨论】:
标签: python string python-3.x binary hex
你不能解码字符串对象;它们已经解码。您必须使用不同的方法。
您可以使用codecs.decode() function 来应用hex 作为编解码器:
>>> import codecs
>>> codecs.decode('ab', 'hex')
b'\xab'
这应用了Binary transform 编解码器;它相当于使用base64.b16decode() function,将输入字符串转换为大写:
>>> import base64
>>> base64.b16decode('AB')
b'\xab'
您还可以使用binascii.unhexlify() function 将十六进制数字序列“解码”为字节:
>>> import binascii
>>> binascii.unhexlify('ab')
b'\xab'
无论哪种方式,你都会得到一个bytes 对象。
【讨论】:
\xhh 转义序列。例如,34 是 '4' 字符的十六进制 ASCII 代码点。 67 是 'g'。
使用binascii:
import binascii
binary_string = binascii.unhexlify(hex_string)
【讨论】:
binascii.hexlify?