В Python для представления данных в двоичной форме можно использовать байты. Из этой статьи вы узнаете, как преобразовать строку в байты и наоборот.
Но прежде чем мы рассмотрим преобразования, давайте поговорим о том, как работают байты в Python. Вы можете перейти к следующему разделу, если вы уже поняли это или вас интересуют только преобразования.
Как работают байты в Python
Вы можете создавать байтовые литералы, используя префикс b. Он указывает интерпретатору Python, что набор символов должен рассматриваться как байты. Вот пример:
byte_data = b'Hello'
Здесь мы поставили префикс b
прямо перед строковым значением: b'Hello'
. При выводе любого из символов этой строки вы получите его двоичное значение:
byte_data = b'Hello' print(byte_data[0]) # 72
Вместо «H» было выведено 72. Перебирая индексы, вы продолжите печатать двоичные значения символов под этими индексами:
byte_data = b'Hello' print(byte_data[0]) # 72 => H print(byte_data[1]) # 101 => e print(byte_data[2]) # 108 => l print(byte_data[3]) # 108 => l print(byte_data[4]) # 111 => 0
Теперь давайте поговорим о преобразованиях.
Преобразовываем строку в байты
Для перевода строки в байты в Python можно использовать метод encode()
. Метод просто кодирует строку, используя определенную кодировку, например UTF-8, ASCII и так далее.
Вот пример:
string_data = "Hello" print(string_data[0]) # H
Здесь мы создали строку string_data
со значением «Hello». Мы также вывели первый символ строки — «H».
Теперь давайте преобразуем эту строку в байты с помощью метода encode()
:
string_data = "Hello" byte_data = string_data.encode('utf-8') print(byte_data[0]) # 72
Мы преобразовали переменную string_data
в байты с помощью метода encode()
, который принял в качестве параметра «utf-8». Мы сохранили это преобразование в переменной byte_data
: byte_data = string_data.encode('utf-8')
.
Наконец, мы вывели первый символ переменной byte_data
и получили его двоичное значение: print(byte_data[0]) # 72
.
Преобразовываем байты в строку
Для преобразования байтов в строку в Python можно использовать метод decode()
. Он работает так же, как и метод encode()
: присоедините его к переменной, которую нужно преобразовать, используя точечную нотацию, и укажите тип кодировки в качестве параметра метода.
Вот пример:
byte_data = b'Hello' string_data = byte_data.decode('utf-8') print(string_data[0]) # H
Мы создали байтовый объект под названием byte_data
. С помощью метода decode()
мы преобразовали его в строку и сохранили в переменной string_data
: string_data = byte_data.decode('utf-8')
.
При печати символов переменной string_data
вы должны получить строковые символы, а не их двоичные значения: print(string_data[0]) # H
.
Заключение
Из этой статьи вы узнали, как использовать байты в Python. Вы также познакомились с двумя методами преобразования: encode()
и decode()
. Первый метод переводит строки в байты, а второй — байты в строки.
Перевод статьи «Python Bytes to String – How to Convert a Str to Bytes and Back Again».