Come si converte una stringa in valori ASCII?Converti stringa in valore ASCII python
Ad esempio, "hi" sarebbe tornato 104105.
posso fare individualmente ord ('h') e ord ('i'), ma che sta per essere fastidioso quando ci sono un sacco di lettere.
Come si converte una stringa in valori ASCII?Converti stringa in valore ASCII python
Ad esempio, "hi" sarebbe tornato 104105.
posso fare individualmente ord ('h') e ord ('i'), ma che sta per essere fastidioso quando ci sono un sacco di lettere.
È possibile utilizzare un elenco di comprensione:
>>> s = 'hi'
>>> [ord(c) for c in s]
[104, 105]
Se si desidera che il risultato concatenato, come si mostra nella sua interrogazione, si potrebbe provare qualcosa di simile:
>>> reduce(lambda x, y: str(x)+str(y), map(ord,"hello world"))
'10410110810811132119111114108100'
Ecco una bella concisa modo per eseguire la concatenazione:
>>> s = "hello world"
>>> ''.join(str(ord(c)) for c in s)
'10410110810811132119111114108100'
E una sorta di divertente alternativa:
>>> '%d'*len(s) % tuple(map(ord, s))
'10410110810811132119111114108100'
Non è affatto ovvio perché si voglia concatenare i "valori ascii" (decimali). Quel che è certo è che concatenarli senza zeri iniziali (o qualche altro padding o delimitatore) è inutile - nulla può essere recuperato in modo affidabile da un tale output.
>>> tests = ["hi", "Hi", "HI", '\x0A\x29\x00\x05']
>>> ["".join("%d" % ord(c) for c in s) for s in tests]
['104105', '72105', '7273', '104105']
Si noti che le prime 3 uscite sono di lunghezza diversa. Si noti che il quarto risultato è uguale al primo.
>>> ["".join("%03d" % ord(c) for c in s) for s in tests]
['104105', '072105', '072073', '010041000005']
>>> [" ".join("%d" % ord(c) for c in s) for s in tests]
['104 105', '72 105', '72 73', '10 41 0 5']
>>> ["".join("%02x" % ord(c) for c in s) for s in tests]
['6869', '4869', '4849', '0a290005']
>>>
Nota nessun problema.
def stringToNumbers(ord(message)):
return stringToNumbers
stringToNumbers.append = (ord[0])
stringToNumbers = ("morocco")
la descrizione è piuttosto confusa; concatenare direttamente i valori decimali non sembra utile nella maggior parte dei contesti. il seguente codice riprodurrà ogni lettera con un carattere a 8 bit e THEN si concatenerà. questo è il modo in cui funziona la codifica 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
Cosa stavo pensando? Questo è molto più pitone del mio. Questo è quello che ottengo per aver cercato di rispondere a una domanda di pitone subito dopo aver letto una serie di domande su Haskell ... +1 – Nate