103 votes

Convertir la chaîne en valeur ASCII python

Comment convertiriez-vous une chaîne en valeurs ASCII ?

Par exemple, "hi" renverrait [104 105] .

Je peux faire individuellement ord('h') et ord('i'), mais ça va être gênant quand il y a beaucoup de lettres.

152voto

Mark Byers Points 318575

Vous pouvez utiliser une compréhension de liste :

 >>> s = 'hi'
>>> [ord(c) for c in s]
[104, 105]

33voto

Andrew Clark Points 77748

Voici une manière assez concise d'effectuer la concaténation :

 >>> s = "hello world"
>>> ''.join(str(ord(c)) for c in s)
'10410110810811132119111114108100'

Et une sorte d'alternative amusante :

 >>> '%d'*len(s) % tuple(map(ord, s))
'10410110810811132119111114108100'

9voto

devunt Points 199

Si vous utilisez python 3 ou supérieur,

 >>> list(bytes(b'test'))
[116, 101, 115, 116]

7voto

Nate Points 6155

Si vous voulez que votre résultat soit concaténé, comme vous le montrez dans votre question, vous pouvez essayer quelque chose comme :

 >>> reduce(lambda x, y: str(x)+str(y), map(ord,"hello world"))
'10410110810811132119111114108100'

3voto

Jason Stein Points 644

votre description est plutôt déroutante ; concaténer directement les valeurs décimales ne semble pas utile dans la plupart des contextes. le code suivant convertira chaque lettre en un caractère 8 bits, puis concaténera. c'est ainsi que fonctionne l'encodage ASCII standard

 def ASCII(s):
    x = 0
    for i in xrange(len(s)):
        x += ord(s[i])*2**(8 * (len(s) - i - 1))
    return x

Prograide.com

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.

Powered by:

X