圧縮された zlib データを含む複数のバイナリ文字列がある場合、すべてを解凍せずにそれらを 1 つの圧縮文字列に効率的に結合する方法はありますか?
私が今しなければならないことの例:
c1 = zlib.compress("The quick brown fox jumped over the lazy dog. ")
c2 = zlib.compress("We ride at dawn! ")
c = zlib.compress(zlib.decompress(c1)+zlib.decompress(c2)) # Warning: Inefficient!
d1 = zlib.decompress(c1)
d2 = zlib.decompress(c2)
d = zlib.decompress(c)
assert d1+d2 == d # This will pass!
私が欲しいものの例:
c1 = zlib.compress("The quick brown fox jumped over the lazy dog. ")
c2 = zlib.compress("We ride at dawn! ")
c = magic_zlib_add(c1+c2) # Magical method of combining compressed streams
d1 = zlib.decompress(c1)
d2 = zlib.decompress(c2)
d = zlib.decompress(c)
assert d1+d2 == d # This should pass!
私は zlib と DEFLATE アルゴリズムについてあまり詳しくないので、これは理論的な観点からは完全に不可能かもしれません。また、use zlib を使用する必要があります。そのため、zlib をラップして、連結されたストリームを透過的に処理する独自のプロトコルを考え出すことはできません。
注: 解決策が Python で簡単でなくてもかまいません。C コードを書いて、Python で ctypes を使用したいと考えています。