私は、ソケット接続を介してデータパケットを送受信することで、サードパーティのTCP/IPベースのAPIと対話するPython 2.7プログラムを作成しています。Python 2.7/python-lzoで圧縮解除MiniLZO文字列1.11
データ・パケットは、次の部分から構成:
- 10バイトの長さヘッダは、データの前に挿入されています。
- ボディ;
- データの末尾にトレーラを追加する必要があります。
ヘッダーには、データの長さとデータの種類に関する情報が含まれています。データパケット全体は、ヘッダ、実際のデータ、および予告編を含む。
圧縮方式はMiniLZOです。
私の問題は、データを扱う方法、具体的にはMiniLZOで圧縮されたパケットの本体です。
bytearray(b'\x01W\x00\x00\x000W\x00\x00\x00')
<TASK><MESSAGE Type="LogonReq" Session="" Reference="TP1" Product="2">
</MESSAGE></TASK>
bytearray(b'\x02')
サーバの応答:
HEADER: 10 Bytes
'\x01\xb1\x00\x00\x001\xae\x00\x00\x00'
BODY:177 Bytes
'\x002<TASKREPLY><MESSAGE Type="LogonReqReply" Session="DUH3PRdH"
ReferencP\x05\x00\x18TP1" Product="2">\r\n<ANSWER Result="1"
[email protected]\x01\x00\x1225146" Date="20171028" Mode="P" /></\xcc\x11\x0c>
</TASKREPLY>\r\n\x11\x00\x00'
TRAILER:1 Bytes
'\x02'
Iパッケージpython-lzo
1.11をインストールし、体内を解凍しようとした:
、
>>> import lzo
>>> lzo.decompress(body)
しかし、このエラーを返します:
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
lzo.decompress(body)
error: Header error - invalid compressed data
この問題の解決方法はわかりません。私はそれをgoogleにしようとしましたが、Python/MiniLZOに関する情報はほとんどありません。 lzo
パッケージを間違った方法で使用したか、データが最初に不適切に圧縮されたかどうかはわかりません。