Python编码/解码为十六进制不再可用
示例
Python2.x2.7"1deadbeef3".decode('hex')
#输出:'\x1d\xea\xdb\xee\xf3'
'\x1d\xea\xdb\xee\xf3'.encode('hex')
#出:1deadbeef3
Python3.x3.0"1deadbeef3".decode('hex')
#追溯(最近一次通话):
# File "<stdin>", line 1, in <module>
#AttributeError:“str”对象没有属性“decode”
b"1deadbeef3".decode('hex')
#追溯(最近一次通话):
# File "<stdin>", line 1, in <module>
#LookupError:“十六进制”不是文本编码;使用codecs.decode()处理任意编解码器
'\x1d\xea\xdb\xee\xf3'.encode('hex')
#追溯(最近一次通话):
# File "<stdin>", line 1, in <module>
#LookupError:“十六进制”不是文本编码;使用codecs.encode()处理任意编解码器
b'\x1d\xea\xdb\xee\xf3'.encode('hex')
#追溯(最近一次通话):
# File "<stdin>", line 1, in <module>
#AttributeError:“字节”对象没有属性“编码”
但是,如错误消息所建议,您可以使用该codecs模块来实现相同的结果:
import codecs
codecs.decode('1deadbeef4', 'hex')
#出:b'\x1d\xea\xdb\xee\xf4'
codecs.encode(b'\x1d\xea\xdb\xee\xf4', 'hex')
#出:b'1deadbeef4'
注意,codecs.encode返回一个bytes对象。要获取str仅decodeASCII的对象:
codecs.encode(b'\x1d\xea\xdb\xee\xff', 'hex').decode('ascii')
#出:'1deadbeeff'