2012-10-14 55 views
3

我有一些数据通过被描述为base64编码的web服务。Base64编码变化?我有base64编码的数据没有正确解码

例子:AgAOAAAAQQEA3AcKDhIyCNwHCg4SMgyYIzSWoACP1T2TRRw1MTExMDUwMTE2ICAAAAAAAAAAAAAA3AAjU1QsKzAyMjEuMGxiDQo=

然而,试图解码,这是不来了,结果我本来期望:

>>> base64.b64decode('AgAOAAAAQQEA3AcKDhIyCNwHCg4SMgyYIzSWoACP1T2TRRw1MTExMDUwMTE2ICAAAAAAAAAAAAAA3AAjU1QsKzAyMjEuMGxiDQo=') 
'\x02\x00\x0e\x00\x00\x00A\x01\x00\xdc\x07\n\x0e\x122\x08\xdc\x07\n\x0e\x122\x0c\x98#4\x96\xa0\x00\x8f\xd5=\x93E\x1c5111050116 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdc\x00#ST,+0221.0lb\r\n' 

它看起来像解码字符串的结尾是有点儿,八九不离十沿着我正在寻找的路线。理论上它应该可以转换成类似于MT=2012-10-14 18:50:08, TT=2012-10-14 18:50:12, BT=00:A0:96:34:23:98, SN=5111050116 , BL=6.30V, S/H=4/3, Weight=221.0lb(100.24kg)的东西,但我无法弄清楚这里的编码是怎么回事。

+0

这是一个你想恢复的mysql binlog dump吗? – xception

+0

不能,从Qualcomm设备上发布设备读数 – ashgromnies

+0

更新我的答案,我现在可以告诉你的所有内容,我不知道如何解码BL或S/H,并且没有关于这些字段可能代表的信息,我绝对没有办法猜测它们是如何编码的,希望它们不是至关重要的,或者您可以提供更多信息。 – xception

回答

2

我到目前为止,我可能需要更多的信息,以一切解码,但这里有云:

>>> t = base64.b64decode('AgAOAAAAQQEA3AcKDhIyCNwHCg4SMgyYIzSWoACP1T2TRRw1MTExMDUwMTE2ICAAAAAAAAAAAAAA3AAjU1QsKzAyMjEuMGxiDQo=') 

日期时间字段MT和TT的顺序为:

>>> print int(t[9:11][::-1].encode("hex"), 16), int(t[11].encode("hex"), 16), int(t[12].encode("hex"), 16), int(t[13].encode("hex"), 16), int(t[14].encode("hex"), 16), int(t[15].encode("hex"), 16) 
2012 10 14 18 50 8 

>>> print int(t[16:18][::-1].encode("hex"), 16), int(t[18].encode("hex"), 16), int(t[19].encode("hex"), 16), int(t[20].encode("hex"), 16), int(t[21].encode("hex"), 16), int(t[22].encode("hex"), 16) 
2012 10 14 18 50 12 

BT是,你只需要添加 ':' 每两个字母:

>>> t[23:29][::-1].encode("hex") 
'00a096342398' 

SN是:

>>> t[35:47] 
'5111050116 ' 

重量为:

>>> t[63:72] 
'+0221.0lb' 

很抱歉,但我没有任何想法的那一刻,其余的存储方式,因为我不知道这些范围可能是任我真的没有办法解码剩下的东西,让我知道你是否可以透露更多关于这些字段应该存储的信息。