【发布时间】:2014-04-07 11:16:13
【问题描述】:
我使用 Huffman 编码压缩了一个二进制文件。现在我正在尝试寻找压缩效率。
在我的二进制文件中,我有符号(0 和 1 的一部分)和频率(符号的重复)。 假设我有:
- 符号:0 频率:173
- 符号:1 频率:50
- 符号:2 频率:48
- 符号:3 频率:45
目前每个符号都以 UInt64 编码,因此如果我计算大小的方式正确,文件大小将为 (173+50+48+45)*8=2528 字节。如果我错了,请纠正我。在调试时我得到 2536,还有 8 个我不知道为什么?
压缩后我得到这样的编码
- 符号:0 代码:1
- 符号:1 代码:00
- 符号:2 代码:011
- 符号:3 代码:010
谁能告诉我如何使用这些信息对这个二进制文件进行霍夫曼压缩?我尝试在 Google 上搜索,但没有二进制文件的样本,它们有一些浮动类型的频率,我无法理解如何将它们与我的二进制文件相关联。
【问题讨论】:
-
在 C++ 中实现 Huffman 的示例(如果有帮助的话):github.com/barakman/Huffman
标签: c# compression huffman-code