1039
От сюда :
Функция ord () получит значение типа 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
.
chr(31415) -> '窷'
chr(ord(u'й'.encode('cp1251'))).decode('cp1251') == u'й'
. В Python 3 (илиunichr
в Python 2) входной номер интерпретируется как целочисленный порядковый номер кодовой точки Unicode:unichr(0x439) == '\u0439'
(первые 256 целых чисел имеют то же отображение, что и latin-1:,unichr(0xe9) == b'\xe9'.decode('latin-1')
первые 128 - ascii:unichr(0x0a) == b'\x0a'.decode('ascii')
это Unicode, а не Python).Обратите внимание, что
ord()
само по себе значение ASCII не дает; он дает вам числовое значение символа в любой кодировке, в которой он находится. Следовательно, результатord('ä')
может быть 228, если вы используете Latin-1, или может повысить значение,TypeError
если вы используете UTF-8. Вместо этого он может даже вернуть код Unicode, если вы передадите ему Unicode:источник
unicode
по умолчанию. Python3 ( bytes ):str(b'\xc3\x9c', 'ascii')
-> повышает UnicodeDecodeError . Python3 ( байты ):str(b'\xc3\x9c', 'utf-8')
-> возвращает Ü . Вы также можете посмотреть на шесть пакетов.Ты ищешь:
источник
Принятый ответ правильный, но есть более умный / эффективный способ сделать это, если вам нужно конвертировать целую кучу символов ASCII в их коды ASCII одновременно. Вместо того, чтобы делать:
или немного быстрее:
вы конвертируете в нативные типы Python, которые итерируют коды напрямую. На Python 3 это тривиально:
и в Python 2.6 / 2.7, он только немного более сложный, потому что у него нет объекта стиля Py3
bytes
(bytes
это псевдоним дляstr
, который повторяется по символу), но они имеютbytearray
:Кодирование как тип, который итеративно повторяется по порядковому номеру, означает, что преобразование происходит намного быстрее; в местных испытаниях на обоих Py2.7 и Py3.5, перебор ,
str
чтобы получить его ASCII - коды с использованиемmap(ord, mystr)
начинается с примерно в два раза длиннее наlen
10 ,str
чем при использованииbytearray(mystr)
на py2 илиmystr.encode('ascii')
на PY3, а такжеstr
получает больше, множитель оплаченныхmap(ord, mystr)
подъемов до ~ 6,5x-7x.Единственным недостатком является то, что преобразование происходит одновременно, поэтому ваш первый результат может занять немного больше времени, а действительно огромный
str
будет иметь пропорционально большое временное числоbytes
/bytearray
, но если это не заставит вас перебирать страницы, это вряд ли будет иметь значение ,источник
Чтобы получить ASCII-код символа, вы можете использовать
ord()
функцию.Вот пример кода:
Вывод:
источник