Преобразование списка чисел в двоичный файл - PullRequest
0 голосов
/ 03 апреля 2020

У меня очень длинный список больших чисел в Python, например, в форме

[429996711.2753906, 106845465.30664062, 47285925.673828125, 373352395.4082031, 934463030.1191406, 53994183.962890625, 455503649.6542969, 741004174.1660156, 725379998.9648438, 485329924.8046875, 16476769.255859375,...]

. Мне нужно преобразовать каждое число из десятичного в двоичное, а затем сохранить эти двоичные числа в сырой двоичный файл без окончания строки CRLF. Кто-нибудь сможет сказать, как это сделать? Я нигде не смог найти полезного ответа. Спасибо!

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Этот фрагмент создает файл data.bin с 88 байтами (11 двойных по 8 байтов каждый):

import struct

data = [429996711.2753906, 106845465.30664062,
    47285925.673828125, 373352395.4082031,
    934463030.1191406, 53994183.962890625,
    455503649.6542969, 741004174.1660156,
    725379998.9648438, 485329924.8046875,
    16476769.255859375]

packed = map(lambda i: struct.pack("@d", i), data)

with open("data.bin", "wb") as fh:
    for i in packed:
        fh.write(i)
1 голос
/ 03 апреля 2020
  1. Преобразование десятичных знаков в байтовый массив или аналогичный - см. этот поток SO о преобразовании чисел в байтовый массив

  2. Запись байтового массива в файл в двоичном режиме - используйте режим "wb" в функции open(), чтобы пометить файл как двоичный, как обсуждалось в этом потоке SO о том, как записать байтовый массив целых чисел в двоичный файл.

# make file
newFile = open("filename.txt", "wb")
# write to file
newFile.write(myBytearray)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...