Как написать целое число, в частности, нет байтов в Python (запись в файл) - PullRequest
2 голосов
/ 19 февраля 2010

предполагается, что мне нужно хранить несколько целых чисел, таких как 1024, 512, 10240 или 900000, в файле, но условие состоит в том, что я могу использовать только 4 байта (не меньше и не макс.). он хранится как "1024" или "512" или "10240", т.е. они записаны как значение ascii, но я хочу сохранить их двоичное значение напрямую.

Любая помощь будет действительно заметной.

Ответы [ 2 ]

11 голосов
/ 19 февраля 2010

используйте struct модуль

>>> import struct
>>> struct.pack("i",1024)
'\x00\x04\x00\x00'
>>> struct.pack("i",10240)
'\x00(\x00\x00'
>>> struct.pack("i",900000)
'\xa0\xbb\r\x00'

В Python3 вы можете использовать to_bytes метод int.Парень около 1024 необходим только как 1024. анализирует как число с плавающей точкой и может вызвать синтаксическую ошибку.

>>> (1024).to_bytes(4, "big")
b'\x00\x00\x04\x00'
>>> (1024).to_bytes(4, "little")
b'\x00\x04\x00\x00'
4 голосов
/ 19 февраля 2010

Модуль struct сделает

>>> import struct
>>> f = open('binary.bin','wb')
>>> f.write(struct.pack("l",1024))
>>> f.close()

vinko@parrot:~$ xxd -b binary.bin
0000000: 00000000 00000100 00000000 00000000                    ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...