C 我能强迫zlib使用RLE编码和固定的哈夫曼树吗?

C 我能强迫zlib使用RLE编码和固定的哈夫曼树吗?,c,zlib,huffman-code,C,Zlib,Huffman Code,我正在尝试为一个没有内存的体系结构创建一个与zlib兼容的压缩器/解压缩器。我的寄存器数量有限,但没有内存缓冲区。我的例程必须以与zlib兼容的方式压缩文件,以便可以在计算机上对其进行解压缩。事实并非如此。我只需要解压缩我自己的文件 因为我没有记忆,动态哈夫曼出局了。我必须使用RFC 1951第3.2.6节中定义的固定哈夫曼树。然而,我也只想做RLE,因为我对距离1以外的任何文字都没有记忆。我试图了解是否可以强制标准zlib库以这种格式输出压缩文件,以便通过两种实现运行测试向量,并验证我的实现是

我正在尝试为一个没有内存的体系结构创建一个与zlib兼容的压缩器/解压缩器。我的寄存器数量有限,但没有内存缓冲区。我的例程必须以与zlib兼容的方式压缩文件,以便可以在计算机上对其进行解压缩。事实并非如此。我只需要解压缩我自己的文件

因为我没有记忆,动态哈夫曼出局了。我必须使用RFC 1951第3.2.6节中定义的固定哈夫曼树。然而,我也只想做RLE,因为我对距离1以外的任何文字都没有记忆。我试图了解是否可以强制标准zlib库以这种格式输出压缩文件,以便通过两种实现运行测试向量,并验证我的实现是否提供与zlib库完全相同的输出

但是,我看不到任何强制zlib创建同时具有Z_-RLE和Z_-FIXED的文件的选项。如果我指定Z_RLE,它似乎想要构建动态的哈夫曼树。如果我指定Z_FIXED,我看不到任何方法将匹配距离限制为1

我是否正确理解zlib不支持这种模式(Z_RLE+Z_FIXED),并且没有任何现有的选项组合会强制类似的输出?如果这在目前是不可能的,并且我想在zlib中实现一个新模式来进行测试,那么它是否像全局搜索Z_FIXED的实例并将(=Z_FIXED)的每个实例更改为(=Z_FIXED)|(=Z_RLE)一样简单


感谢您的帮助。

目前没有办法将距离限制为1,而只使用固定代码


在trees.c中有一个地方查找
Z_FIXED
。您可以将该事件更改为
s->strategy==Z|u FIXED | s->strategy==Z|u RLE
。然后,如果您请求
Z_RLE
,它将执行您的请求。

如果失败;以下是声音。使用明文中的测试向量;使用您的实现对它们进行压缩,并使用标准zlib进行解压缩,然后查看是否恢复了明文。