Преобразование символа в ASCII и обратно в Python
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Для преобразования символа в его ASCII-код можно использовать функцию ord()
, а для обратного преобразования — функцию chr()
:
char_to_int = ord('A') # 65
int_to_char = chr(65) # 'A'
Вызов ord('A')
вернет 65, а chr(65)
— 'A'.
Понимание ord()
и chr()
Python предлагает встроенные функции для преобразования символов в целые числа и обратно:
ord()
: Принимает на вход строку из одного символа и возвращает ее порядковый номер в Unicode. Важно:ord()
выдаст исключение, если строка пуста или содержит больше одного символа.chr()
: Функция, выполняющая обратное действие по отношению кord()
. Принимает на вход число, которое представляет код символа в Unicode, и возвращает соответствующий символ. При попытке передать отрицательное число или неправильный тип данных будет вызвано исключение.
Работа с несколькими символами
Если вам требуется обработать набор символов, используйте list comprehension и функции map()
или join()
— это добавит эффективности:
# Преобразование строки в список ASCII-кодов
ascii_values = [ord(char) for char in "ICD10"]
# Обратное преобразование из ASCII-кодов в строку
chars = ''.join(chr(num) for num in ascii_values)
Python также позволяет использовать chr()
внутри f-строк:
formatted_string = f"Символ: {chr(65)}" # 'A'
Unicode и его особенности
Python поддерживает Unicode, позволяя работать со многими символами, включая те, которые находятся за пределами ASCII:
unicode_char_to_int = ord('あ') # Возвращает 12354 — поддерживаются даже символы японского алфавита!
int_to_unicode_char = chr(12354) # Возвращает 'あ'
Визуализация
Процесс преобразования символов в числа и обратно можно представить как поездку по железной дороге:
Город Строк 🏙️ <----🛤️---> Город Целых Чисел 🏢
Преобразование символа в число — это поиск его "номера дома" в городе Целых Чисел:
'H' 🏠➡️ 72
Преобразование числа в символ — это отправление "письма" обратно на символьную улицу в Город Строк:
72 ✉️➡️ 'H'
В Python эти действия можно осуществить с помощью ord()
и chr()
.
Возможные проблемы и их решения
Неправильные предположения
Суммируя целое число и ASCII-код символа 'a', вы не получите символ, а вычитание кода '0' из результата ord()
не преобразует символ назад в число. При возникновении сомнений основывайтесь на функциях ord()
и chr()
.
Использование проверенных ресурсов
Опирайтесь на знания сообщества разработчиков и официальную документацию по chr()
и ord()
, чтобы избегать ошибок.
Сценарии кодирования
В некоторых случаях кодирования вы можете использовать такие методы, как bytearray()
, decode()
и encode()
:
byte_array = bytearray('hello', 'utf-8') # Преобразование в байтовый массив
back_to_string = byte_array.decode('utf-8') # А вот и обратное преобразование в строку
Полезные материалы
- Встроенные функции — документация Python 3.12.2
- Таблица ASCII – коды символов ASCII, HTML, восьмеричные, шестнадцатеричные, десятичные
- python – Как получить ASCII-значение символа – Stack Overflow
- Приведение типов в Python
- Работа со строками и символами в Python – Real Python
- Python int() (с примерами)
- Форматирование строк в Python – ThePythonGuru.com