十六进制的霍夫曼与 RLE

Huffman vs RLE in Hexadecimal

我正在尝试压缩一个包含十六进制字符的文件,但我不知道使用霍夫曼编码是否有效,因为 RLE 取决于文件和字符,而这从来都不是如果我将文件更改为压缩,则相同。

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

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

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

其次,您可以同时应用 RLE(或更好的 LZ77 匹配字符串,它是 RLE 的概括)和 Huffman,具体取决于结果字节中的冗余(如果有)。像 zlib 这样的现有压缩方法会为你做这件事,同时应用两者。