В 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».
Управление памятью - важный, но часто упускаемый из виду аспект программирования. При неправильном подходе оно…
Как возникает круговой импорт? Эта ошибка импорта обычно возникает, когда два или более модуля, зависящих…
Вы когда-нибудь оказывались в ситуации, когда скрипт на Python выполняется очень долго и вы задаетесь…
В этом руководстве мы разберем все, что нужно знать о символах перехода на новую строку…
Блок if __name__ == "__main__" в Python позволяет определить код, который будет выполняться только при…
Давайте разберем, как настроить модульные тесты для экземпляров классов. Мы напишем тесты для проверки функциональности…