Has hex codec been excluded from python 3.3? When I write the code
>>> s="Hallo"
>>> s.encode('hex')
Traceback (most recent call last):
File "<pyshell#24>", line 1, in <module>
s.encode('hex')
LookupError: unknown encoding: hex
What does that mean? I know about binascii.hexlify() but still .encode() method is nice! Any suggestion?
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'