我使用霍夫曼编码压缩了二进制文件。现在我试图找到压缩效率。
在我的二进制文件中,我有符号(buch为0& 1)和频率(符号重复)。 假设我有:
目前,每个符号都是在UInt64中编码的,因此如果我的计算大小的方法是正确的,那么文件的大小将是(173 + 50 + 48 + 45)* 8 = 2528字节。如果我错了,请纠正我。在调试时我得到2536,还有8个我不知道为什么?
压缩后,我得到了这样的编码
有人可以告诉我如何使用这些信息让哈夫曼压缩这个二进制文件吗?我尝试在Google上搜索,但没有二进制文件样本,他们有一些浮动类型的频率,我无法理解如何将它们与我的二进制文件相关联。
答案 0 :(得分:1)
您需要简单计算最终总计的位数:
173 * 1 + 50 * 2 + 48 * 3 + 45 * 3
达到552位。转换为整个字节给出了69个字节。假设解压缩器可以知道字典等,那么压缩到69/2528或原始的约3%。假设您的输入符号(0到3)由于某种原因是64位值。
答案 1 :(得分:0)
根据提供的频率,树是错误的。它必须是0 10 110 111
它始终以所有正位结束。与霍夫曼树不同的解决方案可能有效,但不能提供最佳压缩效果。