Binary LZW算法-二进制压缩

Binary LZW算法-二进制压缩,binary,compression,gzip,bzip2,lzw,Binary,Compression,Gzip,Bzip2,Lzw,我正试图建立一个文件压缩程序。 到目前为止,我实现了哈夫曼编码算法,但我注意到这是不够的-压缩是最小的,我只能压缩几百万位,通常只有原始文件的1%。 我搜索了有关它的信息,发现大多数压缩文件程序,如bzip2和gzip,都使用LZW和Huffman算法的组合。 当我尝试使用LZW算法时,我被困在了如何在二进制、位上实现它的问题上。关于该算法的大多数示例和解释都是针对字母字符串进行的,而关于二进制的信息有限且不充分。对于如何在二进制上实现它,有没有一个完整清晰的指南,或者有没有一种简单理解它的方法

我正试图建立一个文件压缩程序。 到目前为止,我实现了哈夫曼编码算法,但我注意到这是不够的-压缩是最小的,我只能压缩几百万位,通常只有原始文件的1%。 我搜索了有关它的信息,发现大多数压缩文件程序,如bzip2和gzip,都使用LZW和Huffman算法的组合。
当我尝试使用LZW算法时,我被困在了如何在二进制、位上实现它的问题上。关于该算法的大多数示例和解释都是针对字母字符串进行的,而关于二进制的信息有限且不充分。对于如何在二进制上实现它,有没有一个完整清晰的指南,或者有没有一种简单理解它的方法?

都没有使用LZW。gzip使用,它在以前的数据中查找匹配的字符串。然后使用哈夫曼码发送文本和长度/距离对。bzip2使用了一个,然后移动到前端,运行长度编码和哈夫曼编码。

我知道这些算法,并再次尝试阅读它们,并将其用于二进制数据,但未能成功实现。LZ77算法似乎更有效,但我如何在二进制代码中以一种它理解为指针而不是一个新的“字节数”的方式区分向后跳转,以及所有这些,而不增加大小。我不理解它,如果有人能为我简化它,让我在文件上实现它,我将不胜感激。你不需要自己实现它。只需使用类似的库。我不想这样做,因为这里的重点是尝试自己实现它(代码),这是真正的挑战。阅读deflate压缩格式的描述。这将向您展示一个关于文字和长度/距离对是如何编码的示例,以及代码描述本身是如何压缩的。这是一个非常困难的文档,但我将尝试从中提取我需要的信息。非常感谢你的帮助。