Deencoding HEX en Python 3.2

En Python 2.x soy capaz de hacer esto:

>>> '4f6c6567'.decode('hex_codec') 'Oleg' 

Pero en Python 3.2 me encuentro con este error:

 >>> b'4f6c6567'.decode('hex_codec') Traceback (most recent call last): File "", line 1, in  b'4f6c6567'.decode('hex_codec') TypeError: decoder did not return a str object (type=bytes) 

De acuerdo con los documentos, hex_codec debe proporcionar “correlaciones de bytes a bytes”. Así que el objeto de la cadena de bytes se utiliza correctamente aquí.

¿Cómo puedo deshacerme de este error para evitar soluciones complicadas para convertir texto codificado en hexadecimal?

En Python 3, el método bytes.decode() se usa para decodificar bytes sin procesar a Unicode, por lo que debe obtener el decodificador del módulo de codecs usando codecs.getdecoder() o codecs.decode() para codificaciones de bytes :

 >>> codecs.decode(b"4f6c6567", "hex_codec") b'Oleg' >>> codecs.getdecoder("hex_codec")(b"4f6c6567") (b'Oleg', 8) 

La última función parece faltar en la documentación, pero tiene una documentación útil.

También es posible que desee echar un vistazo a binascii.unhexlify() .