In Python 2.x I’m able to do this:
>>> '4f6c6567'.decode('hex_codec')
'Oleg'
But in Python 3.2 I encounter this error:
>>> b'4f6c6567'.decode('hex_codec')
Traceback (most recent call last):
File "<pyshell#25>", line 1, in <module>
b'4f6c6567'.decode('hex_codec')
TypeError: decoder did not return a str object (type=bytes)
According to the docs hex_codec should provide “bytes-to-bytes mappings”. So the object of byte-string is correctly used here.
How can I get rid of this error to be able to avoid unwieldy workarounds to convert from hex-encoded text?
In Python 3, the
bytes.decode()method is used to decode raw bytes to Unicode, so you have to get the decoder from thecodecsmodule usingcodecs.getdecoder()orcodecs.decode()forbytes-to-bytesencodings:The latter function seems to be missing from the documentation, but has a useful docstring.
You might also want to have a look at
binascii.unhexlify().