inconsistency in converting from/to hex

Laszlo Nagy gandalf at shopzeus.com
Sat Nov 16 17:16:58 EST 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)
b'ff'

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

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

Questions:

* 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