logo

Преобразование символа в ASCII и обратно в Python

Быстрый ответ

Для преобразования символа в его ASCII-код можно использовать функцию ord(), а для обратного преобразования — функцию chr():

Python
Скопировать код
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() — это добавит эффективности:

Python
Скопировать код
# Преобразование строки в список ASCII-кодов
ascii_values = [ord(char) for char in "ICD10"]

# Обратное преобразование из ASCII-кодов в строку
chars = ''.join(chr(num) for num in ascii_values)

Python также позволяет использовать chr() внутри f-строк:

Python
Скопировать код
formatted_string = f"Символ: {chr(65)}"  # 'A'

Unicode и его особенности

Python поддерживает Unicode, позволяя работать со многими символами, включая те, которые находятся за пределами ASCII:

Python
Скопировать код
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():

Python
Скопировать код
byte_array = bytearray('hello', 'utf-8')  # Преобразование в байтовый массив
back_to_string = byte_array.decode('utf-8')  # А вот и обратное преобразование в строку

Полезные материалы

  1. Встроенные функции — документация Python 3.12.2
  2. Таблица ASCII – коды символов ASCII, HTML, восьмеричные, шестнадцатеричные, десятичные
  3. python – Как получить ASCII-значение символа – Stack Overflow
  4. Приведение типов в Python
  5. Работа со строками и символами в Python – Real Python
  6. Python int() (с примерами)
  7. Форматирование строк в Python – ThePythonGuru.com