Partage
  • Partager sur Facebook
  • Partager sur Twitter

[python] Convertir une chaine en ASCII

2 avril 2008 à 18:28:23

Bonjour à tous, et merci d'avance à ceux qui pourront me répondre.

Je cherche en fait comment faire pour convertir une chaîne de caractères en son code ASCII (exemple : Bonjour = 66.111.110.106.11.117.114).

Merci d'avance, et désolé si ma question est vraiment (trop) bête.
  • Partager sur Facebook
  • Partager sur Twitter
2 avril 2008 à 18:46:31

Tu traites chaque caractère l'un après l'autre et tu lui appliques ord(char) si mes souvenirs sont bons
  • Partager sur Facebook
  • Partager sur Twitter
2 avril 2008 à 18:55:00

Bonjour,

  1. chaine="Bonjour"
  2. for car in chaine:
  3.         print ord(car),


voilà ça devrait faire l'affaire.
  • Partager sur Facebook
  • Partager sur Twitter
2 avril 2008 à 18:58:59

@saffir, c'est sympa de ta part, mais bon, je ne pense pas qu'il va en retenir grand chose si tu lui donnes tout comme ça ;)
  • Partager sur Facebook
  • Partager sur Twitter
2 avril 2008 à 19:13:59

Merci les gens, c'est sympa.
Et ne vous inquiétez pas, j'ai pas l'habitude d'utiliser un script que je ne comprends pas, d'autant plus que je suis en train de me remettre doucement à python (j'ai fait une grosse interruption de deux ans), ça me fait du bien de tout reprendre.
  • Partager sur Facebook
  • Partager sur Twitter
3 avril 2008 à 0:12:47

Désolé j'avais pas vu que t'avait déjà donner la réponse... :-°
et sinon c'est vrai que j'ai trop tendance à donner la réponse sans laisser réfléchir... Mauvais défaut ça !!! :p
Bon tant pis la prochaine fois je laisserai réfléchir. Encore sOOry
  • Partager sur Facebook
  • Partager sur Twitter
3 avril 2008 à 0:35:17

Sinon :

  1. to_ascii = lambda s: '.'.join([str(ord(c)) for c in s])
  2. print to_ascii('Bonjour') # 66.111.110.106.111.117.114


:-°
  • Partager sur Facebook
  • Partager sur Twitter
3 avril 2008 à 9:17:23

Ce que j'adore avec les lambda fonction de ce genre, c'est à quel point on y gagne en lisibilité...
  • Partager sur Facebook
  • Partager sur Twitter
3 avril 2008 à 17:35:21

Effectivement, c'est vraiment super ... je peux comprendre le script de Saffir, mais là j'y arrive pas, mais alors pas du tout.
  • Partager sur Facebook
  • Partager sur Twitter
4 septembre 2017 à 23:50:36

def convert(n):
d = []
g = list(str(n))
for index in g:
d.append(ord(index))
return d
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
5 septembre 2017 à 19:29:19

Si on utilise du code ASCII, alors pourquoi ne pas utiliser simplement le module array, qui utilise les C types ?

>>> from array import array
>>> codes = array('B', b'Bonjour')
>>> codes
array('B', [66, 111, 110, 106, 111, 117, 114])
>>> codes[0]
66
>>> codes[1]
111
>>> codes[-1]
114

Si 'Bonjour' est un str, il faut le transformer en bytes comme indiqué dans la documentation.

>>> s = 'Bonjour'
>>> type(s)
<class 'str'>
>>> 
>>> s_bytes = bytes(s, 'utf8')
>>> type(s_bytes)
<class 'bytes'>
>>> 
>>> codes = array('B', s_bytes)
>>> codes
array('B', [66, 111, 110, 106, 111, 117, 114])

Ça marche bien, ça répond à la problématique, et c'est très efficace...

Autre solution bête et méchante

>>> list(s_bytes)
[66, 111, 110, 106, 111, 117, 114]



-
Edité par Anonyme 5 septembre 2017 à 19:31:24

  • Partager sur Facebook
  • Partager sur Twitter
23 septembre 2019 à 7:12:35

Je remonte le sujet , j'ai cherché aussi la même chose.... ça évitera peut-être à d'autre personne de chercher ou se prendre la tête pour rien .

Le plus simple :

>>> chaine = "Bonjour le monde"
>>> chaine.encode('hex')
'426f6e6a6f7572206c65206d6f6e6465'
>>> chaine2 = "426f6e6a6f7572206c65206d6f6e6465"
>>> chaine2.decode('hex')
'Bonjour le monde'
>>> 



-
Edité par petitegirafe 23 septembre 2019 à 7:32:09

  • Partager sur Facebook
  • Partager sur Twitter
12 décembre 2019 à 17:43:17

@MouhaThioub Bonjour, merci de ne pas déterrer d'ancien sujet inutilement juste pour dire bonjour. 

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter