Как в Python «красиво/правильно» преобразовать «число» в байты и обратно?
Для целых можно так (число должно быть неотрицательным):
(1).to_bytes(2, byteorder=’little’)
(-1+2**16).to_bytes(2, byteorder=’little’)
Для произвольных следует использовать struct.pack
struct.pack(«i», -1)
struct.pack(«f», math.pi)
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Ответы на вопрос 0
Ваш ответ на вопрос
Войдите, чтобы написать ответ
- Python
Как превратить свою аватарку в Telegram в часы?
- 1 подписчик
- час назад
- 15 просмотров
- Python
- +2 ещё
Учу python. Реально ли найти работу в аналитике данных на 4-6 часов в день?
- 1 подписчик
- 2 часа назад
- 18 просмотров
Байты (bytes и bytearray)
Байтовые строки в Python — что это такое и с чем это едят? Байтовые строки очень похожи на обычные строки, но с некоторыми отличиями. Попробуем выяснить, с какими.
Что такое байты? Байт — минимальная единица хранения и обработки цифровой информации. Последовательность байт представляет собой какую-либо информацию (текст, картинку, мелодию. ).
Создаём байтовую строку:
Что делать с байтами? Хотя байтовые строки поддерживают практически все строковые методы, с ними мало что нужно делать. Обычно их надо записать в файл / прочесть из файла и преобразовать во что-либо другое (конечно, если очень хочется, то можно и распечатать). Для преобразования в строку используется метод decode:
Bytearray в python - массив байт. От типа bytes отличается только тем, что является изменяемым. Про него, в общем-то, больше рассказать нечего.
Для вставки кода на Python в комментарий заключайте его в теги
Перевод байтов в строку в Python 3
В ходе разработки на Python часто возникают ситуации, когда необходимо работать с данными, представленными в виде байтов. Например, при чтении данных из файла или при получении ответа от веб-сервера. Сам по себе тип bytes довольно удобен для манипуляций на уровне байтов, однако, для вывода информации на экран или сохранения в текстовый файл, обычно требуется конвертация в строку.
Рассмотрим типичную ситуацию. Предположим, есть некоторый объект типа bytes :
my_bytes = b'This is some bytes'
Цель — преобразовать my_bytes в строку.
В Python 3 для преобразования байт в строку используется метод decode() . Этот метод применяется к объекту типа bytes и возвращает строку. Важно знать, что decode() принимает один аргумент — название кодировки, в которой представлены исходные байты. Если аргумент не указан, по умолчанию используется кодировка ‘utf-8’.
Таким образом, чтобы преобразовать my_bytes в строку, достаточно выполнить следующую операцию:
my_string = my_bytes.decode()
Теперь my_string — это строка, которую можно напечатать, записать в файл или использовать в любых других операциях, предусмотренных для строк.
print(my_string)
В результате на экран будет выведено: This is some bytes .
Стоит обратить внимание, что если исходные байты представлены в другой кодировке, необходимо указать эту кодировку в качестве аргумента метода decode() . Например, если байты закодированы в ‘cp1251’, то преобразование в строку будет выглядеть так:
my_string = my_bytes.decode('cp1251')
Таким образом, преобразование байтов в строку в Python 3 — это простая и удобная операция, которая позволяет эффективно работать с данными различных типов.
Байты¶
Байтовые строки очень похожи на обычные строки, но с некоторыми отличиями.
Что такое байты? Байт - минимальная единица хранения и обработки цифровой информации. Последовательность байт представляет собой какую-либо информацию (текст, картинку, мелодию. ).
Создание байтовой строки¶
Создаём байтовую строку:
>>> b'bytes' b'bytes' >>> 'Байты'.encode('utf-8') b'\xd0\x91\xd0\xb0\xd0\xb9\xd1\x82\xd1\x8b' >>> bytes('bytes', encoding = 'utf-8') b'bytes' >>> bytes([50, 100, 76, 72, 41]) b'2dLH)'
Функция bytes принимает список чисел от 0 до 255 и возвращает байты, получающиеся применением функции chr .
>>> chr(50) '2' >>> chr(100) 'd' >>> chr(76) 'L'
Что делать с байтами? Хотя байтовые строки поддерживают практически все строковые методы, с ними мало что нужно делать. Обычно их надо записать в файл / прочесть из файла и преобразовать во что-либо другое (конечно, если очень хочется, то можно и распечатать). Для преобразования в строку используется метод decode :
>>> b'\xd0\x91\xd0\xb0\xd0\xb9\xd1\x82\xd1\x8b'.decode('utf-8') 'Байты'
Bytearray¶
Bytearray в Python - массив байт. От типа bytes отличается только тем, что является изменяемым.
>>> b = bytearray(b'hello world!') >>> b bytearray(b'hello world!') >>> b[0] 104 >>> b[0] = b'h' Traceback (most recent call last): File "", line 1, in b[0] = b'h' TypeError: an integer is required >>> b[0] = 105 >>> b bytearray(b'iello world!') >>> for i in range(len(b)): . b[i] += i . >>> b bytearray(b'ifnos%>vzun,')