Liste hexadécimale en python

Résolu/Fermé
LucasBou Messages postés 9 Date d'inscription lundi 21 octobre 2013 Statut Membre Dernière intervention 27 février 2014 - Modifié par LucasBou le 21/10/2013 à 09:51
LucasBou Messages postés 9 Date d'inscription lundi 21 octobre 2013 Statut Membre Dernière intervention 27 février 2014 - 21 oct. 2013 à 11:01
Bonjour,

J'ai ce code

def ascii2hex(caractere):
return hex(ord(caractere))

def ascii2hexa_liste(liste):
aux = []
for elem in liste:
aux.append(ascii2hex(elem))
return aux

chaine = raw_input("Chaine a coder : ")
liste_hexa = ascii2hexa_liste(list(chaine))
print liste_hexa

Le programme fait rentrer une chaine de caractères puis la traduit en une liste en hexadécimal. Chaque chiffre en hexadécimal commence par 0x.
J'aimerais pour faire sortir la liste sans les 0x devant chaque chiffre

Merci d'avance pour votre aide :)

2 réponses

Utilisateur anonyme
21 oct. 2013 à 10:13
Ok, dans cette fonction on doit pouvoir faire la totale

def ascii2hex(caractere):
return hex(ord(caractere))[2:]

Puis modifier votre fonction ascii2hexa_liste par

def ascii2hexa_liste(chaine):
for elem in chaine:
yield ascii2hex(elem)

Pour le résultat final

chaine = raw_input("Chaine a coder : ") 
print ''.join(ascii2hexa_liste(chaine))

Non testé...

Si ça ne fonctionne pas, garder comme avant et ne modifier que la fonction ascii2hex comme ci-dessus.
1
LucasBou Messages postés 9 Date d'inscription lundi 21 octobre 2013 Statut Membre Dernière intervention 27 février 2014
21 oct. 2013 à 10:22
Merci j'ai juste eu à modifier la fonction ascii2hex avec ce que vous avez mis en haut et ça marche
Encore merci :)
0
Utilisateur anonyme
21 oct. 2013 à 10:27
Mon code complet est plus efficace, l'avez-vous testé ? est-il fonctionnel ?
0
LucasBou Messages postés 9 Date d'inscription lundi 21 octobre 2013 Statut Membre Dernière intervention 27 février 2014
21 oct. 2013 à 10:36
Je l'ai testé et la boite de commande plante directement
0
Utilisateur anonyme
21 oct. 2013 à 10:40
Désolé, j'ai pu m'empêcher de tester et c'est fonctionnel, c'est rare de réussir à la main du 1er coup, mais je voyais pas mon erreur, normal, car il n'y en avait pas ;)

Voilà mon test sur l'interpréteur

>>> def ascii2hex(caractere):
... return hex(ord(caractere))[2:]
...
>>> def ascii2hexa_liste(chaine):
... for elem in chaine:
... yield ascii2hex(elem)
...
>>> chaine = raw_input("chaine à coder : ")
chaine à coder : Bonjour
>>> print ''.join(ascii2hexa_liste(chaine))
426f6e6a6f7572

Bonne continuation...
0
LucasBou Messages postés 9 Date d'inscription lundi 21 octobre 2013 Statut Membre Dernière intervention 27 février 2014
21 oct. 2013 à 11:01
Ah oui merci beaucoup ça marche :)
0
Utilisateur anonyme
21 oct. 2013 à 09:58
print ''.join(liste_hexa)[2:]

?
0
LucasBou Messages postés 9 Date d'inscription lundi 21 octobre 2013 Statut Membre Dernière intervention 27 février 2014
21 oct. 2013 à 10:04
Quand je met ça il me sort le premier nombre en hexa sans 0x puis après il affiche les autres avec des 0x
Désolé je suis un grand débutant je ne vois vraiment pas comment faire
0