No, using encode()
to hexlify isn't nice.
The way you use the hex
codec worked in Python 2 because you can call encode()
on 8-bit strings in Python 2, ie you can encode something that is already encoded. That doesn't make sense. encode()
is for encoding Unicode strings into 8-bit strings, not for encoding 8-bit strings as 8-bit strings.
In Python 3 you can't call encode()
on 8-bit strings anymore, so the hex
codec became pointless and was removed.
Although you theoretically could have a hex
codec and use it like this:
>>> import codecs
>>> hexlify = codecs.getencoder('hex')
>>> hexlify(b'Blaah')[0]
b'426c616168'
Using binascii is easier and nicer:
>>> import binascii
>>> binascii.hexlify(b'Blaah')
b'426c616168'
hex(n)
. – Nematic