2011-12-15 8 views
0

結果ファイルをバイナリファイルに保存するプログラムがあります。また、結果ファイルをXML形式にエクスポートすることも可能です。未知のバイナリファイルを翻訳する!?出来ますか?

プログラムそのものが結果を閲覧するのに大変なので、私はこの結果ファイルを読むためにプログラムを作成しましたが、明らかにXML形式を使用しています。

問題は、バイナリファイルからエクスポートされたXMLファイルが膨大であることです。元のプログラムで使用できるバイナリファイルは約100KBですが、XMLにエクスポートされた同じファイルは約2〜3MBです。

元のバイナリファイルを読み取る方法がわかりますか?

+1

2-3MBのXMLの問題点は何ですか?一度それをメモリに読み込んだ後、LINQを使ってそれを照会することができます。あなたはバイナリファイルを読むことができます - 問題はありませんが、元のオブジェクトがどのように保存されたのかわからない限り復元することはできません。 – oleksii

+0

同じアプリケーションでバイナリに書き込まれたバイナリファイルをどのように逆シリアル化するか尋ねていますか? –

+0

@oleksii 1つのxmlファイルは問題ではありませんが、時々1つのファイルに50個まで読み込むことができますので、パフォーマンスが低下します –

答えて

2

バイナリファイルからデータを取得するには、その構造を知る必要があります。あなたが構造を知らないなら、これは絶望的な努力になると私は思う。 xmlファイルはデータに加えて構造を含んでいるので、はるかに大きくなります。あなたはそれを読んで解釈することができます。

1

使用できない場合は、プログラムのソースコードを読む必要があります。このプログラムをILDASMまたはReflectorで開き、バイナリファイルの作成方法を理解してください。おそらくこれはバイナリのシリアライゼーションを使用して行われます。

シリアル化属性を含め、元の型の完全なコピーである独自の型を定義し、バイナリシリアル化を使用して読み込むことができます。

ただし、サードパーティのファイル形式を変更するたびに、プログラムを変更する必要が生じる場合があります。 XMLを使う方が良いと思います。

+0

ildasm cantは、プログラム内のexeファイルまたはdllファイルを開くことができません:( –

+0

.NETリフレクタはどうですか? –

+0

元のプログラムは2005年に戻っています... C言語でプログラミングされているかどうかはわかりませんそれは一般的なCLRヘッダーを持っていません... neverthelss私は何が起こるかを見るためにいくつかの他の逆アセンブラを試してみます! –

関連する問題