De aici:
funcția ord() ar obține int valoare de char. Și în cazul în care doriți să converti înapoi după ce a jucat cu numărul, funcția chr() nu truc.
>>> ord('a')
97
>>> chr(97)
'a'
>>> chr(ord('a') + 3)
'd'
>>>
În Python 2, există, de asemenea, unichr funcția, revenind la [Unicode][2] personaj a cărui ordine este
unichr` argument:
>>> unichr(97)
u'a'
>>> unichr(1234)
u'\u04d2'
În Python 3 puteți folosi chr "în loc de" unichr`.
Rețineți că ord()
nu't oferi valoare ASCII sine; acesta vă oferă valoarea numerică a caracterului în orice codare l's în. Prin urmare, rezultatul de ord('ä')
poate fi de 228 daca're folosind Latin-1, sau se poate ridica un Nume
daca're folosind UTF-8. Se poate reveni chiar Unicode codepoint în schimb, dacă treci un unicode:
>>> ord(u'あ')
12354
Acceptat răspunsul este corect, dar există o mult mai inteligent/eficient mod de a face acest lucru, dacă aveți nevoie pentru a converti o grămadă de caractere ASCII lor coduri ASCII dintr-o dată. În loc de a face:
for ch in mystr:
code = ord(ch)
sau ceva mai rapid:
for code in map(ord, mystr):
te-ai convertit la Python nativ tipuri care repeta codurile direct. Pe Python 3, l's banal:
for code in mystr.encode('ascii'):
și pe Python 2.6/2.7, l's doar puțin mai implicat pentru că nu't au o Py3 stil octeți
obiect (octeți
este un alias pentru str
, care reiterează de caracter), dar acestea nu au bytearray
:
# If mystr is definitely str, not unicode
for code in bytearray(mystr):
# If mystr could be either str or unicode
for code in bytearray(mystr, 'ascii'):
Codare ca un tip care nativ reiterează de ordinal înseamnă transformarea merge mult mai repede; în teste locale de pe ambele Py2.7 și Py3.5, iterarea o str
pentru a obține coduri ASCII folosind harta(ord, mystr)incepe a lua de două ori mai mult pentru un " len " 10
strdecât folosind
bytearray(mystr) pe Py2 sau mystr.codifica('ascii')
pe Py3, și ca str
devine mai mult, multiplicatorul plătit pentru harta(ord, mystr)` se ridica la ~6.5 x-7x.
Singurul dezavantaj este că transformarea este tot la o dată, astfel încât primul rezultat ar putea dura un pic mai mult, și de o situare cu adevărat enorm str
ar fi un proporțional mari temporară bytes
/`bytearray, dar dacă acest lucru te forțează în pagina de bătaie, e't de natură să conteze.
Pentru a obține codul ASCII al unui caracter, puteți folosi ord()
funcția.
Aici este un exemplu de cod:
valoare = input("valoarea Ta aici: ") lista=[ord(ch) ch în valoare] print(list)
Ieșire:
``
Valoarea ta aici: qwerty
[113, 119, 101, 114, 116, 121]