«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу преобразовать целые числа в байтовые строки и обратно в Python?

Как я могу преобразовать целые числа в байтовые строки и обратно в Python?

Опубликовано 9 ноября 2024 г.
Просматривать:181

How Can I Convert Integers to Byte Strings and Back in Python?

Создание байтовых строк с помощью «bytes(n)»

Функция «bytes(n)» в Python 3 не преобразует целое число в его двоичное представление, но вместо этого создает строку байтов длины n, заполненную нулевыми байтами (b'\x00'). Такое поведение происходит из Python 3.2, где метод to_bytes() был введен как средство кодирования целых чисел в байты.

To_Bytes и To_Bytes

The "to_bytes" ()" позволяет явно преобразовать целое число в байтовое представление, задав порядок байтов (с прямым порядком байтов или с прямым порядком байтов) и длина. Например:

(1024).to_bytes(2, byteorder='big') == b'\x04\x00'

From_Bytes и From_Bytes

Дополнительный метод from_bytes() может преобразовать последовательность байтов обратно в целое число:

int.from_bytes(b'\x04\x00', 'big') == 1024

Целые числа без знака

Метод to_bytes() работает с неотрицательными (беззнаковыми) целыми числами. Для обработки целых чисел со знаком необходим немного другой подход:

def int_to_bytes(number: int) -> bytes:
    return number.to_bytes(length=(8   (number   (number < 0)).bit_length()) // 8, byteorder='big', signed=True)

def int_from_bytes(binary_data: bytes) -> Optional[int]:
    return int.from_bytes(binary_data, byteorder='big', signed=True)

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

Заявление о выпуске Эта статья перепечатана по адресу: 1729407016. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3