99 Stimmen

String in ASCII-Wert umwandeln python

Wie kann man eine Zeichenkette in ASCII-Werte umwandeln?

Zum Beispiel würde "hi" Folgendes ergeben [104 105] .

Ich kann einzeln ord('h') und ord('i') machen, aber das wird schwierig, wenn es viele Buchstaben gibt.

150voto

Mark Byers Punkte 761508

Sie können ein Listenverständnis verwenden:

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

33voto

Andrew Clark Punkte 193562

Hier ist eine ziemlich prägnante Methode zur Durchführung der Verkettung:

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

Und eine Art lustige Alternative:

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

14voto

MestreLion Punkte 11407

Im Jahr 2021 können wir davon ausgehen, dass nur Python 3 relevant ist, also...

Wenn Ihre Eingabe bytes :

>>> list(b"Hello")
[72, 101, 108, 108, 111]

Wenn Ihre Eingabe str :

>>> list("Hello".encode('ascii'))
[72, 101, 108, 108, 111]

Wenn Sie eine einzige Lösung wollen, die mit beiden funktioniert:

list(bytes(text, 'ascii'))

(alle oben genannten werden absichtlich die UnicodeEncodeError wenn str enthält Nicht-ASCII-Zeichen. Eine berechtigte Annahme, da es keinen Sinn macht, nach dem "ASCII-Wert" von Nicht-ASCII-Zeichen zu fragen).

8voto

devunt Punkte 339

Wenn Sie Python 3 oder höher verwenden,

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

7voto

Nate Punkte 12067

Wenn Sie Ihr Ergebnis verkettet haben wollen, wie Sie in Ihrer Frage zeigen, könnten Sie etwas wie folgt versuchen:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X