需要帮助从pickle中提取二进制数据

时间:2012-02-10 12:07:31

标签: python

在MMO游戏中存储在.dat文件中的用户帐户统计信息。我知道这是蟒蛇泡菜。 我不是专业的py(我真的不懂这种语言)然后我可以写

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 个答案:

答案 0 :(得分:1)

[]表示列表,()表示元组(不可变列表),{}表示字典(即地图)。

考虑:

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

在顶层,这是一个元组:

  • 第一个元素是标量8
  • 第二个元素是一个字典,我们只看到第一个条目的一部分:
    • 条目的关键是元组(2, 1)
    • 该条目的值也是一个元组;它以1315840806开头,后跟一个包含类似二进制数据的字符串。

希望你明白这一点。

相关问题