Мне нужно было отправить пользователю сообщение в моем приложении чата по сети. Поскольку вы не можете отправить необработанное сообщение по сети, рекомендуется преобразовать сообщение в байты и отправить его по сети.

Для этого сначала мне пришлось преобразовать сообщение в массив байтов, а затем отправить его по сети. Я исследовал Интернет и нашел три решения для преобразования строки в массив байтов.

Метод, который я использовал для преобразования строки в байт, был bytearray(), после конвертации я отправил данные по сети на другой конец.

Я хочу прояснить ваши понятия о преобразовании строки в байт. Строка представляет собой набор символов, тогда как массив байтов представляет собой набор последовательности байтов.

В строке вы можете представить каждый символ как числовое значение на основе схемы кодировки символов, например ASCII, UTF-8 или UTF-16.

Эта схема кодировки символов содержит список, показывающий, как представить каждый символ в виде числового значения. Например, схема кодировки символов ASCII определяет символ или букву «А» с использованием числового значения 65.

Эти числовые значения в схеме кодирования символов называются байтовыми значениями. Таким образом, преобразование строки в массив байтов означает преобразование каждого символа строки в соответствующее ему значение байта на основе схемы кодирования символов.

В Python существует несколько способов преобразования любой строки в массив байтов.

Содержание

С использованием функции bytes()

Функция Python bytes() принимает два значения: объекты, которые вы хотите преобразовать в массив байтов, и схему кодирования, основанную на объекте, преобразуемом в байты.

Синтаксис:

bytes(objects, encoding)

Где:

  • bytes(): это функция преобразования данных объектов в байты.
  • objects: это объекты, которые вы хотите преобразовать в байты; в нашем случае мы будем использовать строку.
  • encoding: укажите кодировку символов, которую вы хотите использовать при преобразовании объектов в массив байтов.

Например, предположим, что у вас есть переменная Product_description, содержащая строку, показанную ниже.

product_description = "Compatible with heavy appliances like ACs, Heaters, Geysers, Water Pumps etc."

Чтобы преобразовать это описание продукта в строковую форму на основе схемы кодировки «UTF-8», вы можете использовать функцию bytes(), как показано в коде ниже.

bytes_array = bytes(product_description,'utf-8')

Вышеуказанное преобразует строку в массив байтов и сохраняет ее в переменной с именем «bytes_array». Помните, что функция bytes() возвращает объект bytes, который не является изменяемым, что означает, что вы не можете его изменить.

Проверьте заданный тип строки до и после преобразования, чтобы убедиться, что он преобразован в массив байтов.

print("The string type before conversion", product_description)

print("The string type after conversion", bytes_array)

Строка Python в массив байтов с использованием функции bytes()

Посмотрите на результат. Строка до преобразования видна, но после преобразования вы можете увидеть букву(«b»), обозначенную кружком на рисунке выше.

Это означает, что это байтовые данные, или ваша строка представлена с использованием массива байтов: посмотрите на эту строку (b’ Совместимость с тяжелыми устройствами, такими как AC). Здесь она содержит букву «b» в качестве префикса, что означает, что эта строка представляет собой массив байтов.

С использованием bytearray()

В Python есть функция bytearray(), которая выполняет ту же задачу, что и функция bytes(), которую вы узнали в предыдущем разделе. Разница в том, что byte() возвращает неизменяемые объекты, а bytearray() возвращает изменяемые объекты.

Когда вы преобразуете строку в массив байтов, функция bytearray() возвращает байтовый объект, который вы можете изменить, но байтовый объект, возвращаемый функцией bytes(), изменить нельзя.

Синтаксис:

 bytearray(строка, кодировка)

Где:

  • bytearray(): функция преобразует заданную строку в массив байтов.
  • строка: строковые объекты, которые вы хотите преобразовать в байты.
  • кодировка: укажите кодировку символов, которую вы хотите использовать при преобразовании объектов в массив байтов.

Например, у вас есть переменная с именем «about», которая содержит информацию о пользователе в строковой форме, как показано ниже.

about="Hey, I am MacLen and I am engineer by profession"

Теперь передайте строку в переменной «about» в функцию bytearray() с кодировкой «utf-16», как показано в коде ниже.

bytes_array_data = bytearray(about, 'utf-16')

Далее посмотрите, как выглядит строка после преобразования в массив байтов, используя приведенный ниже код.

print("The string before conversion", about)

print("The string after conversion", bytes_array_data)

с использованием bytearray()

Из приведенного выше вывода видно, что строка преобразуется в массив байтов с помощью функции bytearray(), которая возвращает массив байтов в виде ‘bytearray(b’\xff\xfeH\x00e\x00y\x00,\x00 \x00I\x00 )’.

С использованием функции encode()

Функция encode() Python кодирует строку в байты на основе указанной схемы кодирования.

Синтаксис:

string.encode(encoding=encoding)

Где:

  • string: это строка, которую вы хотите преобразовать в байт.
  • encode (encoding=encoding): этот метод вызывается для строки с указанной схемой кодирования для преобразования этой строки в байты, но если вы не предоставляете схему кодировки, по умолчанию он использует «utf-8».

Например, посмотрите на приведенный ниже код.

string = "I walk two km everyday"
byte_value = string.encode()
print(byte_value)

Строка в массив байтов в Python с использованием функции encode()

Посмотрите на результат: он преобразовал данную строку в массив байтов типа («Я хожу два километра каждый день»).

По умолчанию он использует схему кодировки «utf-8», и мы не предоставили схему кодировки, если вы посмотрите на string.encode().

Добавить комментарий