3

我有一些来自被描述为 base64 编码的 Web 服务的数据。

例子: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)但我无法弄清楚这里的编码发生了什么。

4

1 回答 1

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'

抱歉,目前我不知道其余部分是如何存储的,而且由于我不知道这些范围可能是多少,我真的无法解码其余部分,如果您可以透露,请告诉我关于这些字段应该存储什么的更多信息。

于 2012-10-14T21:28:04.187 回答