Байты Python представляют собой последовательность целых чисел в диапазоне 0–255. Это неизменяемый тип данных последовательности, то есть их нельзя изменить после создания объекта bytes.
- С помощью метода to_bytes()
- С помощью модуля struct
- С помощью побитового оператора
- С использованием байтового массива и побитового сдвига
- Понимание списка
- Итоги
С помощью метода to_bytes()
В Python метод to_bytes() принимает целочисленное значение в качестве первого входного аргумента, длину объекта выходных байтов в качестве второго входного аргумента и порядок байтов в качестве третьего входного аргумента.
Ниже приведен полный код Python для преобразования целых чисел в байты с использованием метода to_bytes().
int_number = 4578 converted_to_bytes = int_number.to_bytes(2, 'big') print(converted_to_bytes)
Я использовал метод .to_bytes() для преобразования целого числа, указывающего количество байтов, которое вы хотите получить в результирующем байтовом объекте. Где «большой» указывает порядок байтов.
converted_to_bytes = int_number.to_bytes(2, 'big')
Выход:
b'\x11\xe2'
Обратитесь к снимку экрана ниже, чтобы увидеть выходные данные программы Python.
С помощью модуля struct
Это еще один подход к преобразованию целых чисел в байты с использованием модуля struct в Python. Модуль struct в Python используется для упаковки и распаковки данных из C-подобных структур. Функция package() в Python особенно полезна для преобразования целого числа в байты.
Он обеспечивает большую гибкость при обработке двоичных данных. Это встроенный модуль, доступный в Python3.
Полная программа Python для преобразования целых чисел в байты с использованием модуля struct.
import struct int_num = 4192 int_converted_byte = struct.pack('>H', int_num) print(int_converted_byte)
Функция Pack() в Python вызывает пакеты данных в объект байтов в соответствии с форматом, где H указывает порядок байтов, то есть самый значимый байт(т. е. байт высшего порядка), который идет первым.
int_converted_byte = struct.pack('>H', int_num)
Выход:
b'\x10`'
Вы можете увидеть выходные данные программы Python на снимке экрана ниже.
С помощью побитового оператора
В Python побитовые операторы используются для выполнения побитовых вычислений. Он преобразует целое число в двоичное, а затем операции выполняются побитно.
Вот полный код Python для преобразования целых чисел в байты с использованием побитового оператора Python.
integer_value = 2096 byte_value = bytes([(integer_value >> 8) & 0xFF, integer_value & 0xFF]) print(byte_value)
Здесь понимание списка используется со списком из двух элементов. Затем он извлечет старший байт integer_value и сдвинет биты вправо на 8 позиций. Теперь примените побитовую операцию И с 0xFF, которая маскирует все, кроме младших 8 бит.
byte_value = bytes([(integer_value >> 8) & 0xFF, integer_value & 0xFF])
Выход:
b'\x080'
Вы можете увидеть результат, представленный на скриншоте ниже.
С использованием байтового массива и побитового сдвига
Другой метод — преобразовать целое число в байты с использованием байтового массива и побитового сдвига в Python. Этот метод повышает гибкость при создании последовательностей байтов, но может быть излишним для простых преобразований.
В Python эти операторы сдвигают биты числа влево или вправо, умножая или деля число на два.
Для этого я буду использовать исходный код Python.
int_number = 4684 byte_array = bytearray() byte_array.append((int_number >> 8) & 0xFF) byte_array.append(int_number & 0xFF) bytes_object = bytes(byte_array) print(bytes_object)
Выход:
b'\x12L'
На снимке экрана ниже показаны выходные данные программы Python для преобразования целого числа в байты с использованием байтового массива и побитового сдвига.
Понимание списка
В Python понимание списка обеспечивает более короткий синтаксис для создания списка на основе значения существующего списка.
Вот полный исходный код Python для преобразования целых чисел в байты с использованием понимания списка.
integer_value = 8128 int_to_byte_value = bytes([integer_value >> i & 0xff for i in(8,0)]) print(int_to_byte_value)
Выход:
b'\x1f\xc0'
На скриншоте ниже вы видите результат преобразования целых чисел в байты в Python.
Итоги
Я надеюсь, что эта статья окажется для вас полезной, поскольку в ней рассказывается, как преобразовать целые числа в байты в Python с использованием пяти различных методов, таких как метод to_bytes(), модуль структуры, побитовый оператор, массив байтов с побитовым сдвигом и понимание списка с их примерами.