Как преобразовать строку в байты в Python

В 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».