Использование ord() и chr() для преобразования символов и целых чисел
На этом этапе мы научимся использовать встроенные функции Python ord() и chr() для преобразования между символами и их соответствующими целочисленными представлениями в Unicode.
В Python 3 строки представлены с использованием Unicode. Функция ord() принимает один символ в качестве входных данных и возвращает его соответствующее десятичное целочисленное значение Unicode.
Давайте создадим новый файл Python для экспериментов с этими функциями. В WebIDE щелкните правой кнопкой мыши на каталоге project в обозревателе файлов и выберите New File. Назовите файл char_conversion.py.
Откройте char_conversion.py в редакторе и добавьте следующий код:
## Используйте ord() для получения десятичного значения Unicode символов
char1 = 'a'
char2 = 'é'
char3 = ';'
print(f"Десятичное значение Unicode для '{char1}' равно: {ord(char1)}")
print(f"Десятичное значение Unicode для '{char2}' равно: {ord(char2)}")
print(f"Десятичное значение Unicode для '{char3}' равно: {ord(char3)}")
Сохраните файл, нажав Ctrl + S (или Cmd + S на macOS).
Теперь снова откройте интегрированный терминал (если он еще не открыт) и запустите скрипт с помощью команды python:
python char_conversion.py
Вы должны увидеть вывод, похожий на этот:
Десятичное значение Unicode для 'a' равно: 97
Десятичное значение Unicode для 'é' равно: 233
Десятичное значение Unicode для ';' равно: 59
Функция chr() выполняет обратную операцию. Она принимает десятичное целое число (или шестнадцатеричное целое число), представляющее кодовую точку Unicode, и возвращает соответствующий символ.
Давайте добавим больше кода в char_conversion.py для использования функции chr(). Добавьте следующие строки к существующему коду:
## Используйте chr() для получения символа из десятичного значения Unicode
int1 = 8364
int2 = 8482
print(f"Символ для десятичного значения Unicode {int1} это: {chr(int1)}")
print(f"Символ для десятичного значения Unicode {int2} это: {chr(int2)}")
## Вы также можете использовать шестнадцатеричные значения с chr()
hex_int = 0x00A9 ## Шестнадцатеричное представление символа '©'
print(f"Символ для шестнадцатеричного значения Unicode {hex(hex_int)} это: {chr(hex_int)}")
Снова сохраните файл.
Запустите скрипт из терминала:
python char_conversion.py
Теперь вывод должен включать результаты работы функции chr():
Десятичное значение Unicode для 'a' равно: 97
Десятичное значение Unicode для 'é' равно: 233
Десятичное значение Unicode для ';' равно: 59
Символ для десятичного значения Unicode 8364 это: €
Символ для десятичного значения Unicode 8482 это: ™
Символ для шестнадцатеричного значения Unicode 0xa9 это: ©
Возможно, вы задаетесь вопросом, как найти шестнадцатеричное представление символа Unicode. Вы можете использовать функцию ord() для получения десятичного значения, а затем встроенную функцию hex() для преобразования десятичного значения в его шестнадцатеричное строковое представление.
Добавьте следующий код в char_conversion.py:
## Преобразование символа в его шестнадцатеричное представление Unicode
char_copyright = '©'
decimal_copyright = ord(char_copyright)
hexadecimal_copyright = hex(decimal_copyright)
print(f"Шестнадцатеричное значение Unicode для '{char_copyright}' равно: {hexadecimal_copyright}")
Сохраните файл и запустите его в последний раз:
python char_conversion.py
Окончательный вывод будет включать шестнадцатеричное значение для символа '©':
Десятичное значение Unicode для 'a' равно: 97
Десятичное значение Unicode для 'é' равно: 233
Десятичное значение Unicode для ';' равно: 59
Символ для десятичного значения Unicode 8364 это: €
Символ для десятичного значения Unicode 8482 это: ™
Символ для шестнадцатеричного значения Unicode 0xa9 это: ©
Шестнадцатеричное значение Unicode для '©' равно: 0xa9
Это демонстрирует, как ord(), chr() и hex() могут использоваться вместе для работы с кодировками символов в Python.