Как получить значение ASCII символа?
Ответ 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
.
Ответ 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))