Как получить значение ASCII символа?

Как получить значение ASCII символа как int в Python?

Ответ 1

Отсюда:

Функция 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.


ord() - документация Python 3.6.5rc1

ord() - документация по Python 2.7.14

Ответ 2

Обратите внимание, что ord() не дает само значение ASCII; он дает вам числовое значение символа в любой его кодировке. Поэтому результат ord('ä') может быть 228, если вы используете Latin-1, или он может вызвать TypeError если вы используете UTF- 8. Вместо этого он может даже вернуть код Unicode, если вы передадите ему Unicode:

>>> ord(u'あ')
12354

Ответ 3

Вы ищете:

ord()

Ответ 4

Принятый ответ правильный, но есть более умный/эффективный способ сделать это, если вам нужно конвертировать целую кучу символов 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, он лишь немного больше задействован, потому что у него нет объекта стиля bytes класса Py3 (bytes является псевдонимом для str, который итерации по символу), но они имеют 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, повторение а 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, но если это не будет вы в переполнении страницы, это вряд ли имеет значение.

Ответ 5

# Program to find the ASCII value of the given character

# Change this value for a different result
chr = 'a'

# Uncomment to take character from user
#chr = input("Enter a character: ")

print("The ASCII value of '" + chr + "' is",ord(chr))

Ответ 6

ASCII значение символа:

ch = input("Please enter Character  :  ")

print("The ASCII Value of %c = %d" %(ch, ord(ch)))

Найти значения ASCII общего количества символов в строке

str1 = input("Please Enter your Own String : ")
for i in range(len(str1)):
print("The ASCII Value of Character %c = %d" %(str1[i], ord(str1[i])))

Мы также можем найти символ из заданного значения ASCII, используя функцию chr(). Эта функция принимает значение ASCII и возвращает символ для данного значения ASCII.

Получение значения ASCII от пользователя

num = int(input("Enter ASCII value: "))
print(chr(num))