1

我正在尝试使用十六进制字符压缩文件,但我不知道使用霍夫曼编码是否有效,因为 RLE 取决于文件和字符,如果我更改文件,这永远不会相同压缩。

我应该使用霍夫曼吗?如果效率低下,为什么?是否有任何已知的算法可以用来更好地压缩它,我可以用任何语言将其编写为代码?

4

2 回答 2

2

首先,您应该将每两个十六进制字符转换为一个字节。这将使您立即获得两倍。

其次,您可以应用 RLE(或更好的 LZ77 匹配字符串,它是 RLE 的概括)和 Huffman,具体取决于结果字节中存在的冗余(如果有)。现有的压缩方法(如 zlib)将为您执行此操作,同时应用这两种方法。

于 2015-01-14T20:50:46.330 回答
2

如果 RLE 有效,Huffman 会更好。有证据表明,如果您的文件足够大,霍夫曼将收敛到最大可能的熵,从而最大化压缩。

于 2015-01-14T18:17:50.447 回答