zlib
予期しない結果をもたらす例があります。
単純な文字列の圧縮から始めると:
>>> import zlib
>>> import binascii
>>> compressed = binascii.hexlify(zlib.compress('first_message'))
>>> compressed
'789c4bcb2c2a2e89cf4d2d2e4e4c4f05002651056d'
逆にすると、期待どおりの結果が得られます。
>>> zlib.decompress(compressed.decode("hex"))
'first_message'
ただし、これを試してみると、予期しない結果が得られます。
>>> d = zlib.decompressobj()
>>> d.decompress(compressed.decode("hex"))
'first_message'
>>> d = zlib.decompressobj()
>>> d.decompress(compressed[:-2].decode("hex"))
'first_message'
ここで何が欠けていますか?これらの 2 つが同じ結果を返すのはなぜですか?