protobufを使用するプログラムで作成されたファイルからraw protobufメッセージを取得しようとしています。私はソースプログラムなどを所有していませんが、protoc --decode_raw
の出力に満足しています。残念ながら、 "入力を解析できませんでした"というエラーが表示されるため、これは機能しません。これは、ファイル内のprotobufデータのヘッダーがあるためです。ソースプログラムはDOTA2で、ファイルは次のように始まります。ファイルのどの部分がヘッダーで、何がprotobufメッセージなのかを確認する
50 42 44 45 4d 53 32 00 f0 54 0e 03 f7 bf 0d 03
01 ff ff ff ff 0f 7b 0a 08 50 42 44 45 4d 53 32
00 10 2c 1a 2e 56 61 6c 76 65 20 44 6f 74 61 20
32 20 45 55 20 4e 6f 72 74 68 20 53 65 72 76 65
72 20 28 73 72 63 64 73 31 32 35 2e 31 38 35 2e
36 34 29 22 0d 53 6f 75 72 63 65 54 56 20 44 65
6d 6f 2a 05 73 74 61 72 74 32 1f 2f 6f 70 74 2f
73 72 63 64 73 2f 64 6f 74 61 2f 64 6f 74 61 5f
76 31 38 33 31 2f 64 6f 74 61 38 02 40 01 48 01
52 00 08 ff ff ff ff 0f 11 08 01 10 01 1a 0b 44
02 82 e8 01 08 00 0a 00 0c 00 08 ff ff ff ff 0f
16 08 02 10 02 1a 10 d3 34 28 14 cc d1 85 c9 d1
41 e0 b3 46 47 06 20 08 ff ff ff ff 0f e7 03 08
03 10 03 1a e0 03 98 70 0f 20 d4 26 40 10 60 04
80 04 c0 b0 f5 e0 59 d1 48 40 01 61 91 17 80 01
b4 25 22 22 f4 c8 7d bc bc c1 d1 bd cc c9 8d 91
cd bd 90 bd d1 85 bd 90 bd d1 85 7d d9 c5 e0 cc
c4 bc 90 bd d1 85 e9 15 cc d1 85 c9 d1 29 06 20
4c bd d5 c9 8d 95 51 59 49 06 00 68 06 ac 06 20
私は少しわからないんですので、ヘッダが終了しているProtobufメッセージが始まるこのファイルをデコードしようとする前にいるProtobufを使用して、知識や経験全くありません。私はかなり ".. v1831/dota8"までヘッダーの一部だと確信していますが、これを削除するとまだ入力の問題を解析できません。
このタイプのファイルに関する詳細はネット上を見てきました(これはDOTA2のデモダウンロードです)。この種のタスクを行う他のプログラムもありますが、明確なカットは見つかりませんヘッダ長に関する情報。私はprotobufについて学ぶためにこれを部分的に使用しているので、別のアプリケーションを使うことは、私が探しているものではありません。
私は最終的にvb.netでこれを動作させるつもりですので、私はprotobuf-netを使用しています(これは質問/回答には関係ありませんが、ちょうどその場合はhereです)。
データの16進ダンプを提供できる場合は、ヘッダーを把握できる可能性があります。しかし、あなたはテキストだけを提供しています。これは、ビットの束が失われていることを意味します。私の最高の推測は、最初の8バイトが "マジックナンバー"であり、それからprotobufデータが始まるということです。 –
@KentonVarda数分前にあなたのコメントを完全に逃しました!テキストの代わりに16進数ダンプを使って質問を更新しました。どんな推測? – FraserOfSmeg