inconsistency in converting from/to hex

Laszlo Nagy gandalf at
Sat Nov 16 23:16:58 CET 2013

We can convert from hex str to bytes with bytes.fromhex class method:

 >>> b = bytes.fromhex("ff")

But we cannot convert from hex binary:

 >>> b = bytes.fromhex(b"ff")
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
TypeError: must be str, not bytes

We don't have bytes_instance.tohex() instance method.
But we have binascii.hexlify. But binascii.hexlify does not return an 
str. It returns a bytes instance instead.

 >>> import binascii
 >>> binascii.hexlify(b)

Its reverse function binascii.unhexlify can be used on str and bytes too:

 >>> binascii.unhexlify(b'ff')
 >>> binascii.unhexlify('ff')


* if we have bytes.fromhex() then why don't we have bytes_instance.tohex() ?
* if the purpose of binascii.unhexlify and bytes.fromhex is the same, 
then why allow binary arguments for the former, and not for the later?
* in this case, should there be "one obvious way to do it" or not?

This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.

More information about the Python-list mailing list