No, usare encode()
per esagire non è bello.
Il modo in cui si utilizza il codec hex
ha funzionato in Python 2 perché è possibile chiamare encode()
su stringhe a 8 bit in Python 2, ovvero è possibile codificare qualcosa che è già codificato. Non ha senso. encode()
è per la codifica di stringhe Unicode in stringhe a 8 bit, non per codificare stringhe a 8 bit come stringhe a 8 bit.
In Python 3 non è più possibile chiamare encode()
su stringhe a 8 bit, quindi il codec hex
è diventato inutile ed è stato rimosso.
Anche se in teoria potrebbe avere un codec hex
e usarlo in questo modo:
>>> import codecs
>>> hexlify = codecs.getencoder('hex')
>>> hexlify(b'Blaah')[0]
b'426c616168'
Utilizzando binascii è più facile e più bello:
>>> import binascii
>>> binascii.hexlify(b'Blaah')
b'426c616168'
fonte
2012-11-18 06:03:04
c'è http://bugs.python.org/issue7475 – jfs
SO, manca il codice 'hex'! C'è un modo per aggiungere quel codec o un metodo, ci sono due file sul tuo link, che cosa fa? – iMagur
Per convertire ** numeri ** in esadecimale, puoi comunque usare 'hex (n)'. – JeromeJ