Jak uzyskać wartość ASCII znaku
5 answers
From here :
Funkcja
ord()
pobiera wartość int char. I w razie gdybyś chciał konwersja z powrotem po zabawie z liczba, funkcjachr()
wystarczy.
>>> ord('a')
97
>>> chr(97)
'a'
>>> chr(ord('a') + 3)
'd'
>>>
W Pythonie 2 pojawiła się również funkcja unichr
, zwracająca znak Unicode , którego porządkiem jest argument unichr
:
>>> unichr(97)
u'a'
>>> unichr(1234)
u'\u04d2'
W Pythonie 3 możesz użyć chr
zamiast unichr
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-01-15 15:14:12
Zauważ, że ord()
nie daje wartości ASCII per se; daje wartość liczbową znaku w dowolnym kodowaniu, w którym jest. Dlatego wynik ord('ä')
może wynosić 228, jeśli używasz Latin-1, lub może wywołać TypeError
, Jeśli używasz UTF-8. Może nawet zwrócić kod Unicode, jeśli przekażesz mu kod unicode:
>>> ord(u'あ')
12354
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-14 23:28:59
Szukasz:
ord()
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-22 20:41:56
Przyjęta odpowiedź jest poprawna, ale istnieje bardziej sprytny / skuteczny sposób, aby to zrobić, jeśli chcesz przekonwertować całą masę znaków ASCII na ich kody ASCII na raz. Zamiast robić:
for ch in mystr:
code = ord(ch)
Lub nieco szybszy:
for code in map(ord, mystr):
Konwertujesz na natywne typy Pythona, które bezpośrednio powtarzają kody. W Pythonie 3 jest to trywialne:
for code in mystr.encode('ascii'):
A w Pythonie 2.6/2.7 jest tylko nieco bardziej zaangażowany, ponieważ nie ma stylu Py3 bytes
object (bytes
jest aliasy dla str
, które iterują według znaków), ale mają 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'):
W lokalnych testach zarówno Py2.7, jak i Py3.5, iteracja a str
, aby uzyskać kody ASCII za pomocą map(ord, mystr)
, zaczyna się około dwa razy dłużej dla kodu ASCII. len
10 str
w porównaniu z bytearray(mystr)
na Py2 lub mystr.encode('ascii')
na Py3, a gdy str
wydłuża się, mnożnik zapłacony za map(ord, mystr)
wzrasta do ~6,5 x-7x.
Jedynym minusem jest że nawrócenie jest wszystkie na raz, więc twój pierwszy wynik może potrwać trochę dłużej, a naprawdę ogromny str
miałby proporcjonalnie duży tymczasowy bytes
/bytearray
, ale jeśli to nie zmusi cię do bicia stron, to raczej nie będzie miało znaczenia.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-18 18:56:30
Aby uzyskać kod ASCII znaku, możesz użyć funkcji ord()
.
Oto przykładowy kod:
value = input("Your value here: ")
list=[ord(ch) for ch in value]
print(list)
Wyjście:
Your value here: qwerty
[113, 119, 101, 114, 116, 121]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-11-01 06:21:27