如何让 zlib(或其他库)创建 Type 01 DEFLATE 块

How to get zlib (or another library) to create Type 01 DEFLATE block

我正在编写一个 DEFLATE 解压缩器(在 Python 中),并想用类型 01 块(即 3.2.6. of RFC 1951.

中的固定霍夫曼代码对其进行测试

我知道我可以自己创建它们,但我想用其他代码创建的块来测试它,例如zlib。我怎样才能做到这一点?到目前为止,从我的测试来看,zlib 总是创建 Type 02 块(即动态霍夫曼代码)或 Type 00 块(未压缩)。

(这最终要用在解压码中)

Ah 找到方法了:将 strategy=zlib.Z_FIXED 传递给 compressobj

import zlib

compressobj = zlib.compressobj(wbits=-zlib.MAX_WBITS, strategy=zlib.Z_FIXED)
compressed_stream = compressobj.compress(b'Some data') + compressobj.flush()