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 は、2 文字ごとに「:」を追加するだけです。

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

SN は次のとおりです。

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

重量は次のとおりです。

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

申し訳ありませんが、残りがどのように保存されているかは現時点ではわかりません。また、それらの範囲が何であるかもわからないため、残りをデコードする方法が本当にありません。開示できるかどうか教えてくださいこれらのフィールドに何を保存するかについてのもう少しの情報。

于 2012-10-14T21:28:04.187 に答える