Comment puis-je convertir un hexagone en ASCII en Python ?
Notez que, par exemple, je veux convertir "0x7061756c" en "paul".
Comment puis-je convertir un hexagone en ASCII en Python ?
Notez que, par exemple, je veux convertir "0x7061756c" en "paul".
Il n'y a pas .decode('hex')
sur Python 3. .decode('hex')
utilise binascii.unhexlify()
sur Python 2 .
Merci de le signaler, je ne suis pas aussi familier avec Python 3. Cette solution ne fonctionnera pas non plus en 1 pour autant que je sache.
La meilleure solution pour moi (fonctionne avec python 3) car elle accepte même les espaces : bytearray.fromhex("70 61 75 6C").decode()
Bytearray.fromhex("70e4756c").decode(encoding="Latin1") 'päul' Pour ceux d'entre nous qui jouent en binaire, les caractères étendus s'étouffent avec le décodage utf-8 par défaut, sinon, c'est la réponse la plus portable que je vois ! Merci !
Bien sûr, vous devez connaître le réel codage des données si elles doivent être interprétées comme du texte. Utilisation de 'latin-1'
éliminera toutes les erreurs mais risque de produire un charabia complet si le texte n'est pas en latin-1.
>>> txt = '7061756c'
>>> ''.join([chr(int(''.join(c), 16)) for c in zip(txt[0::2],txt[1::2])])
'paul'
Je m'amuse juste, mais les parties importantes sont :
>>> int('0a',16) # parse hex
10
>>> ''.join(['a', 'b']) # join characters
'ab'
>>> 'abcd'[0::2] # alternates
'ac'
>>> zip('abc', '123') # pair up
[('a', '1'), ('b', '2'), ('c', '3')]
>>> chr(32) # ascii to character
' '
Je vais regarder binascii maintenant...
>>> print binascii.unhexlify('7061756c')
paul
cool (et je n'ai aucune idée de la raison pour laquelle d'autres personnes veulent vous faire sauter à travers des cerceaux avant de vous aider).
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
J'ai essayé un tas de trucs que j'ai trouvés ici : docs.python.org/library/binascii.html
2 votes
Avec l'aide du lien que vous venez de nous donner, j'ai trouvé la fonction que vous recherchiez. Qu'est-ce que exactement avez-vous essayé et pourquoi cela n'a-t-il pas fonctionné ?
1 votes
J'ai essayé ce qui suit : >>> binascii.b2a_hqx("0x7061756c") '-(Jh-$Ba0c8fB`' >>> binascii.b2a_uu("0x7061756c") '*,'@W,#8Q-S4V8P \n " >>> binascii.b2a_base64("0x7061756c") 'MHg3MDYxNzU2Yw== \n ' >>> binascii.b2a_qp("0x7061756c") '0x7061756c' >>> binascii.b2a_hex("0x7061756c") '30783730363137353663' >>> binascii.b2a_hex(0x7061756c) Traceback (dernier appel le plus récent) : Fichier "<stdin>", ligne 1, dans <module> TypeError : must be string or buffer, not int >>>
0 votes
Aucun d'entre eux n'a fonctionné, car aucun n'a retourné 'paul'.
2 votes
Vous ne voulez pas dire ASCII "7 bits" ? (Ce qui est un peu idiot car l'ASCII n'est que de 7 bits.) Un GUID est de 128 bits...