Чтение данных из двоичного файла в Python

#python #binary

#python #двоичный

Вопрос:

У меня есть код на python, который я не совсем понимаю, поскольку я новичок в python, который считывает данные из двоичного файла и выдает файл CSV.

Код находится на этом сайте, я не могу опубликовать его здесь, потому что он огромен. https://github.com/PX4/Firmware/blob/master/Tools/sdlog2/sdlog2_dump.py

Теперь я знаю, что у вас должен быть ключ к двоичному файлу, чтобы иметь возможность анализировать его и использовать его данные. Чего я не понимаю, так это как этот код, который я связал выше, делает это или где находится ключ в коде. Я пытался прочитать код и разбить его, но из-за моих ограниченных знаний я понятия не имею, куда идти дальше.

Я пытаюсь извлечь ключ, чтобы я мог написать свой собственный код, используя ключ для анализа данных в двоичном файле.

Комментарии:

1. Что заставляет вас думать, что вам нужен «ключ»? Сканирование кода, похоже, не показывает, что обрабатываемый файл каким-либо образом зашифрован. Он просто считывает двоичный формат и извлекает из него поля с помощью модуля struct . В любом случае, что мешает вам использовать тот код, который вы связали, для выполнения собственной обработки данных в файле csv, который он создает?

2. @IrmendeJong Ну, двоичные файлы — это просто нули и единицы, правильно? как бы вы узнали, какой у вас начальный и конечный бит для чтения данных? Кроме того, я знаю, что могу использовать файл CSV, но я пытаюсь понять, возможно ли сделать это таким образом в качестве учебного опыта на случай, если мне нужно сделать что-то подобное, когда у меня нет хорошего кода, который выполнит преобразование CSV для меня.

3. Ознакомьтесь с модулем struct и посмотрите в источнике, на который вы ссылались, как он используется для разбора двоичных данных (байтов) на управляемые отдельные поля. Например: он принимает 4 байта, интерпретирует их как целое число и сохраняет в столбце. Следующие 8 байт превращаются в число с плавающей запятой и сохраняются в следующем столбце. Следующие 20 байтов представляют собой строку и т.д. И т.п. Упомянутый вами «ключ», вероятно, является спецификацией формата двоичного файла. Я немного погуглил, но не могу найти что-то актуальное прямо сейчас, поэтому вам, вероятно, придется использовать формат struct из исходного кода python

4. @IrmendeJong Не могли бы вы указать, где в коде вы читаете часть из 4 байтов и 8 байтов?

5. … это был просто пример