Из здесь:
функция ord() получит значение int из char. И в случае, если вы захотите преобразовать обратно после игры с числом, функция chr() сделает это.
>>> ord('a')
97
>>> chr(97)
'a'
>>> chr(ord('a') + 3)
'd'
>>>
В Python 2 также есть функция unichr
, возвращающая символ Unicode, порядковый номер которого равен аргументу unichr
:
>>> unichr(97)
u'a'
>>> unichr(1234)
u'\u04d2'
В Python 3 вы можете использовать chr
вместо unichr
.
Обратите внимание, что ord()
не дает вам значения ASCII как такового; она дает вам числовое значение символа в любой кодировке, в которой он находится. Поэтому результат ord('ä')
может быть 228, если вы используете Latin-1, или может выдать ошибку TypeError
, если вы используете UTF-8. Он может даже вернуть кодовую точку Unicode, если вы передадите ему unicode:
>>> ord(u'あ')
12354
Вы ищете:
ord()
Принятый ответ правильный, но есть более умный/эффективный способ сделать это, если вам нужно преобразовать целую кучу символов ASCII на их ASCII-коды сразу. Вместо того, чтобы делать:
for ch in mystr:
code = ord(ch)
или чуть быстрее:
for code in map(ord, mystr):
вы преобразовать в Python собственных типов, которые повторяют коды напрямую. На Python 3, Это'ы тривиально:
for code in mystr.encode('ascii'):
и на Python 2.6/2.7, это's только немного сложнее, потому что он не'т иметь Py3 стиле байт
объект ("байт" - это псевдоним для УЛ
, который проходит по характеру), но у них есть объект 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'):
Кодирование как тип, который изначально проходит по порядковому номеру, значит конвертация идет гораздо быстрее; в местные тесты на Py2.7 и Py3.5, перебор ул
, чтобы получить его ASCII-коды, используя карту(ОГА, mystr) начинает делать примерно вдвое длиннее для
лен10
Ул, чем использование
объекта ByteArray(mystr) на Py2 или mystr.кодирование('в формате ASCII') на Py3, и как НТР `` получает больше, множитель заплатил за Карту(ОГА, mystr)
поднимается до ~6,5 х-7х.
Единственным недостатком является то, что преобразование все сразу, так что первый результат может занять немного больше времени, и поистине огромным ул
будет иметь пропорционально большие временные байт
/`объект ByteArray, но если это заставляет вас в разделе взбучку, это'т скорее всего дело.
Чтобы получить ASCII-код символа, вы можете использовать `орд ()
функции.
Вот пример кода:
значение = вход (на"Ваше значение здесь: с ") список=[ОГА(CH) для CH в стоимость] печати(список)
Выход:
``
Ваше значение здесь: йцукен
[113, 119, 101, 114, 116, 121]