我正在开发一个文件压缩程序.我们目前正在实现.ZIP archiver standart,这样当生成压缩的.ZIP归档器时,任何其他信誉良好的压缩器(如7zip)都可以完全理解/解压缩它.
我们现在正在开发基于RFC 1951的DEFLATE算法
我们有LZ77的变体和具有固定代码的霍夫曼编码完美地兼容RFC,因此使用Literal-Length + Distance值.
关于动态霍夫曼编码我目前能够从一些压缩数据中提取霍夫曼树(通过另一个可靠的压缩器压缩),但是当它开始解压缩真实数据时,我得到的值不正确.
可能我正在以错误的方式读树.
我没有具体地找到任何人正确解释这些树的值存储在压缩数据上的方式.
我假设编码数据遵循相同的文字长度值(0~285)+距离(0~30)及其相应的每字节/距离的额外比特,如RFC中所解释的那样,固定霍夫曼编码的方式相同.
这种存储在固定霍夫曼编码上的方式是将霍夫曼代码与代码中最高有效位存储在存储器中的最低有效位上.通过这种方式,您可以逐位向下导航编码树.霍夫曼代码的
额外位以相反的方式存储.
动态霍夫曼编码是否以相同的方式存储它们?
有什么我缺少的或我应该知道的吗?