On Saturday, November 16, 2013 5:16:58 PM UTC-5, Laszlo Nagy wrote: > 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?
The standard library is not always as consistent as we might like. I don't think there is a better answer than that. This will work if you want to use fromhex with bytes: b = bytes.fromhex(b"ff".decode("ascii")) --Ned. -- https://mail.python.org/mailman/listinfo/python-list