2012-02-10 54 views
2

在存儲在.dat文件中的MMO遊戲用戶帳戶統計信息中。我知道這是python泡菜。 林在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) 

等等...

我不知道如何讓巨蟒字節代碼,什麼王的數據是

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

對象?陣列?如何迭代它。以及我如何將數據保存爲二進制字符串來分析它?代碼示例是值得讚賞的,但有些方法可以繼續前進。感謝名單。

回答

1

[]表示列表,()表示元組(不可變列表),而{}表示字典(即地圖)。

考慮:

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

在頂層,這是一個元組:

  • 第一個元素是標量8
  • 第二個因素是一本字典,其中我們只看到了第一個條目的一部分:
    • 入門的關鍵是元組(2, 1)
    • 該條目的值也是一個元組;它以1315840806開頭,後跟一個包含看起來像某些二進制數據的字符串。

希望你的想法。

+0

謝謝,我的好開始 – mrsombre 2012-02-10 12:19:46

+0

再次感謝,我明白了! – mrsombre 2012-02-10 13:59:12

+0

@DmitryBarsukov:不客氣! – NPE 2012-02-10 14:00:15