Чтение и декодирование двоичного файла для получения результатов - PullRequest
0 голосов
/ 27 декабря 2018

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

Ниже кода, который я использую для чтения файла:

with open("modele_petite_zone.op2", "rb") as op2File :
for lines in op2File :
    byte = op2File.read()
    print(byte)

и вот часть того, что яиметь в выходе:

b '\ xaf \ xc9Dq \ xdd \ xa8 \ xc44 \ x08 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x9e \XDD \ x1f \ X004 \ x08 \ x00 \ x00 \ x00 \ XB0 \ x97EHq \ xccD {\ XDc \ xc3 \ xc44 \ x08 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x9f\ XDD \ x1f \ X004 \ x08 \ x00 \ x00 \ x00 \ XB0 \ x97E3S \ xc1D {4 \ XBF \ xc44 \ x08 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ xa8\ XDD \ x1f \ X004 \ x08 \ x00 \ x00 \ x00 \ XB0 \ x97E \ xe1 \ xc2 \ xc2D \ xc3 \ фиксировано \ xd7 \ xc44 \ x08 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00\ x00 \ x00 \ xA9 \ XDD \ x1f \ X004 \ x08 \ x00 \ x00 \ x00 \ XB0 \ x97Ef \ XB6 \ xb7D \ xa4 \ xd8 \ xd1 \ xc44 \ x08 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00\ x00 \ x00 \ x00 \ x00 \ XB2 \ XDD \ x1f \ X004 \ x08 \ x00 \ x00 \ x00 \ XB0 \ x97ER \ x10 \ xb7DR \ xc8 \ хеа \ xc44 \ x08 \ x00 \ x00 \ x00 \ x00 \ x00\ x00 \ x00 \ x00 \ x00 \ x00 \ XB5 \ XDD \ x1f \ X004 \ x08 \ x00 \ x00 \ x00 \ XB0 \ x97E \ xa40 \ xacD \ xec1 \ XE3 \ xc44 \ x08 \ x00 \ x00 \ x00 \ x00\ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ XBC \ XDD \ x1f \ X004 \ x08 \ x00 \ x00 \ x00 \ XB0 \ x97E \ XCD | \ xa9D \ x00 @ \ хк\ Xc44 \ x08 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ XBD \ XDD \ x1f \ X004 \ x08 \ x00 \ x00 \ x00 \ XB0 \ x97E \ x1f \ фиксировано \ x9eD\ x1f \ x15 \ xf3 \ xc44 \ x08 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ XEC \ x01 \ x00 \ x00 \ x04 \ x00 \ x00 \ x00 \ XFB \ XFF\ XFF \ XFF \ x04 \ x00 \ x00 \ x00 \ x04 \ x00 \ x00 \ x00 \ x01 \ x00 \ x00 \ x00 \ x04 \ x00 \ x00 \ x00 \ x04 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00\ x00 \ x04 \ x00 \ x00 \ x00 \ x04 \ x00 \ x00 \ x00 \ x03 \ x00 \ x00 \ x00 \ x04 \ x00 \ x00 \ x00 \ x0c \ x00 \ x00 \ x00 \ XFF \ XFF \ x00 \ x00\ XFF \ XFF \ x00 \ x00 \ XFF \ XFF \ x00 \ x00 \ x0c \ x00 \ x00 \ x00 \ x04 \ x00 \ x00 \ x00 \ РФА \ XFF \ XFF \ XFF \ x04 \ x00 \ x00 \ x00 \ x04\ x00 \ x00 \ x00 \ x01 \ x00 \ x00 \ x00 \ x04 \ x00 \ x00 \ x00 \ x04 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x04 \ x00 \ x00 \ x00 \ x04 \ x00\ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x04 \ x00 \ x00 \ x00 \ x04 \ x00 \ x00 \ x00 \ x02 \ x00 \ x00 \ x00 \ x04 \ x00 \ x00 \ x00 \ x08 \ x00 \ x00\ x00GEOM3

Что можно сделать для расшифровки выходного файла?

Двоичный файл можно скачать здесь: https://www.dropbox.com/s/uimba2xojc55uii/modele_petite_zone.op2?dl=0

1 Ответ

0 голосов
/ 27 декабря 2018

Двоичный формат означает, что сохраненный файл не читается как текст.Однако двоичный файл не является стандартом, который может быть легко проанализирован, он означает только то, что данные сохраняются как «данные» (биты) вместо текста.Фактический формат (или структура) может быть открытым исходным кодом или проприетарным, то есть он может быть разборным (если вы знаете, как читать данные) или почти невозможным для понимания.

Формат op2, кажется, известен и имеетреализованы модули, которые могут анализировать файлы (см. описание формата https://docs.plm.automation.siemens.com/tdoc/nxnastran/11/help/#uid:index_dmap:xid666580:id496821).

Оформите этот модуль для анализа файлов op2: https://pynastran -git.readthedocs.io / en / latest / index.html

Пример:

from pyNastran.op2.op2 import OP2
model = OP2()
model.read_op2("modele_petite_zone.op2")
print(model.get_op2_stats())
...