2


0

私の仕事は、パラメータがバイナリファイルから来る数学的シミュレーションを実行することを要求します。 シミュレータは問題なくそのようなバイナリファイルを読むことができます。

しかし、パラメーターが必要なものであることを確認するためにバイナリー・ファイルを覗く必要があり、それができないようです。

私はバイナリファイルを読み込み、気になるパラメータを探し、それらの値が何であるかを表示することを可能にするスクリプトをPythonで書きたいのです。

バイナリファイルについて私が知っていること:

これは単純なテキストを表します(画像や音声ファイルとは対照的に)。 ファイルを読み取り可能な形式に「ダンプ」することができるコードがあります。そのダンプをEmacsで開くと、次のようになります。

CENTRAL_BODY = 'SUN'

すべてのファイルは単なる一連の類似した指示です。 私はそのダンプコードを使うことができましたが、私はむしろPythonにそれをやらせます。

これは非常に些細な質問のように思われます。 私は熟練したプログラマーだと思いました!

どうもありがとう。

4 Answer


4


ファイルの内容をメモリ内の文字列に読み込むことができます。

thedata = open(thefilename, 'rb').read()

次に、その中の文字列を見つけます。

where = thedata.find('CENTRAL_BODY')

そして最後に、気になる部分を切り取ります。

thepart = thedata[where:where+50]  # or whatever length

そして好きなように表示してください(例: thepart`内で = `記号を探し、次に最初の引用符、そしてその後の次の引用符を使って文字列値を見つけます。


1


この 'dump’プログラムはすでにあなたが必要としていることをしているようです:バイナリファイルの解釈。 私のアプローチは、ダンプされたファイルを取得し、必要なパラメータを抽出してそれらを表示できるpythonプログラムを書くことだろうと思います。

それからこのようなものでそれを解析してください:

myparms.py:

インポートシステム

sys.stdin内の行に対してd = {}:len(parts)<2の場合、parts = line.split( "="、2):続けるk = parts [0] .strip()v = parts [1] .strip ()d [k] = v

print d ['CENTRAL_BODY']

これを使用してください:

dump parameters.bin | python myparms.py

あなたはプラットフォームについて言及したり、ダンプされたフォーマットについての詳細を提供したりしませんでした、しかしこれは始めるべき場所であるべきです。


0


バイナリファイルの場合は、structモジュールを使用する必要があります。 データがファイル内でどのようにフォーマットされているかを知る必要があります。 それが文書化されていない場合は、リバースエンジニアリングする必要があります。

他のダンピングプログラムのソースコードはありますか? あなたはそれをPythonに移植することができるかもしれません

バイナリファイルとそれに対応するダンプがどのようなものかを確認できれば、おそらくあなたの手助けになるでしょう。


0


データが保存されている形式を知っておく必要があります。それを回避する方法はありません。

仕様書が書かれていない場合は、テキストダンプを参考にして、16進エディタで開き、フォーマットを調べてみてください。 あなたがテキストダンプを作成するツールのソースコードを手に入れることができれば、それはあなたをたくさん助けるでしょう。

データが何らかの形でスクランブルされる可能性があることに留意してください。 rot13。