如何在 zlib 中指定压缩类型?

How do I specify the compression type in zlib?

我有这段使用 zlib 压缩二进制字符串的代码:

f = open("compressed.bin", "wb")
x = zlib.compress(b"Some text to be compressed")
f.write(x)
f.close()

无论输入字符串如何,数据总是使用固定霍夫曼代码进行压缩,而我希望数据使用动态霍夫曼代码进行压缩。我什至尝试使用具有多次重复的字符串(例如 100 个“A”,然后是 100 个“B”,然后是 100 个“A”等等),但它最终也被固定代码压缩。

编辑: 如果我指定 level=9,结果是一样的。

无论哪种方法压缩效果更好,如何指定使用动态代码压缩数据?

给它更多的数据。至少几十K.

仅当固定块比相同数据的动态块小时才使用固定编码。通常只有当少量数据被压缩时,或者最后一个 deflate 块只剩下少量数据时才会出现这种情况。