2012-02-10 6 views
2

.datファイルに格納されたMMOゲームのユーザーアカウント統計情報。私はこれがpython pickleであることを知っています。 PYではプロではない イム(本当に私はこの言葉を知らない)は、すべての後、私はpickleからバイナリデータを抽出するのに助けが必要

data = pickle.load(fp) 
pprint.pprint(data) 

を書いたことができると私は、私はこのから情報を抽出するためにしたいこれら

(8, 
{(2, 1): (1315840806, 
'\x14\x00&#nNWH\x00\x00\x06\x90\xb3\x00\... lostsa bytes), 
    (2, 17): (1327141794, 
"\x14\x00\xa2\x93\x1aOS=\x00\x00\x06T\xaa\x00\x00\x8d\x06>\x00\x00\x00*\... 

のような出力が得られます。フォーマットは、これらの

offs byte 
    0 11 
    1 00 
    2 ac ;last batt time(4) 
    3 8d ;last batt time(4) 
    4 54 ;last batt time(4) 
    5 4d ;last batt time(4) 
    6 e8 ;battle lifetime(4) 
    7 69 ;battle lifetime(4) 
    8 00 ;battle lifetime(4) 
    9 00 ;battle lifetime(4) 
10 04 ;maxfrags (1) 
11 db ;xp (4) 
12 95 ;xp (4) 
13 00 ;xp (4) 
14 00 ;xp (4) 
15 6f ;maxXP (2) 
16 06 ;maxXP (2) 

ようなことのように...

なければならない私はpythonでバイトコードを取得する方法は考えを持っていないし、どのようなデータの王は

(8, 
{(2, 1): (1315840806, 

オブジェクトのですか?アレイ?それを反復する方法。そして、私はそれを分析するバイナリ文字列としてデータを保存することができますか?コードサンプルは評価されていますが、いくつかのやり方で役立つはずです。 〜

答えて

1

[]はリストを示し、()はタプル(不変リスト)を示し、{}は辞書(すなわちマップ)を示す。

考慮する:

  • 最初の要素はスカラー8ある:トップレベルで

    (8, 
    {(2, 1): (1315840806, 
    '\x14\x00&#nNWH\x00\x00\x06\x90\xb3\x00\... lostsa bytes), 
    

    、これはタプルです。

  • 2番目の要素は、私たちが最初のエントリだけの部分を見ているうち辞書、次のとおりです。
    • エントリのキーはタプル(2, 1)です。
    • そのエントリの値もタプルです。 1315840806で始まり、次にバイナリデータのように見える文字列が続きます。

あなたはアイデアを得ることを望みます。

+0

ありがとう、良いスタート私のため – mrsombre

+0

もう一度、ありがとう! – mrsombre

+0

@DmitryBarsukov:ようこそ! – NPE

関連する問題