gpt4 book ai didi

python - 有效地将多个 zlib 压缩数据流连接成一个流

转载 作者:太空宇宙 更新时间:2023-11-03 13:20:49 31 4
gpt4 key购买 nike

如果我有几个带有压缩 zlib 数据的二进制字符串,有没有一种方法可以高效将它们组合成一个压缩字符串,而无需解压缩所有内容?

我现在必须做的事情的例子:

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 并提出我自己的透明处理串联流的协议(protocol)。

注意:如果解决方案在 Python 中不是微不足道的,我真的不介意。我愿意编写一些 C 代码并在 Python 中使用 ctypes。

最佳答案

既然您不介意尝试使用 C,您可以从查看 gzjoin 的代码开始。 .

请注意,gzjoin 代码必须解压缩以找到合并时必须更改的部分,但不必重新压缩。这还不算太糟糕,因为解压通常比压缩快。

关于python - 有效地将多个 zlib 压缩数据流连接成一个流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14744692/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com