这里讨论的仅仅是简单的字符压缩算法,对于更高级的文件压缩便是无能为力了。
总步骤分为六步:
第一、 统计全文中各种字符出现的次数;
第二、 根据每个字符出现不同的次数富裕权值并由此建立哈弗曼树;
第三、 根据哈夫曼树来对全文中每个字符进行哈弗曼编码;
第四、 将每个字符的哈弗曼编码连续写入,每8位截断,并计算出这8个0,1字节串所对应的字符并以字符串的形式存储编码后的字符;
第五、 将最后的不足8位的位数补足并记录补位的个数写入到文件中
第六、 将此哈弗曼树存储到文件末尾
例:
将aaaaabbbbcccdde这段字符压缩成字节数更小的一段编码。
第一步:统计全文中各种字符出现的次数,
字符 |
a |
b |
c |
d |
e |
出现次数 |
5 |
4 |
3 |
2 |
1 |
第二步:根据每个字符出现不同的次数富裕权值并由此建立哈弗曼树
第三步:哈弗曼树建立以后则可根据哈夫曼树来对全文中每个字符进行哈弗曼编码;
在这里数叉左边代表0右边代表1;
字符 |
a |
b |
c |
d |
e |
哈弗曼编码 |
11 |
10 |
01 |
001 |
000 |
第四步:将每个字符的哈弗曼编码连续写入,每8位截断,并计算出这8个0,1字节串所对应的字符并以字符串的形式存储编码后的字符;
aaaaabbbbcccdde这段字符用哈弗曼编码表示则为111111111110101010010101001001000
这串01一共33位,则需要在后面补7个0再在最后记录补了7个0即可
则这段编码的对应的十进制编码为-1 -22 -107 36 0 7最后这个7是记录原编码最后补了7个0的意思。
第五步:将这6个带符号的数字存入文件中,以分隔符隔开,以便读取的时候可以识别。
相关推荐
Spy++ 原理初探VC++相关源代码 Spy++ 原理初探VC++相关源代码
Spy++原理初探 vc源码
生物芯片原理初探.pptx
生物芯片原理初探.ppt编程资料
哈夫曼编码和分形编码图像压缩技术初探。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
统一场的混合扩充原理初探,李裕信,,本文认为混合扩充原理是统一场论必需的重要基础之一。提出所有场的表象都是类似于以非线性的引力场为统一背景的一类博弈(对策)的�
索引原理初探,分析索引的来龙去脉,工作原理。帮你写出更棒的索引
自绘白光747电路,及简述工作原理。
基于分形维的岩体破坏最小能量原理初探,张光振,杨小军,从能量角度出发,研究了分形维数和能量变化的定量关系方面的问题。通过与相关文献的试验结果对比,旨在突出研讨在破坏方向上分形
成效导向系统工程原理初探,陈驰,陈立,随着我国社会经济建设水平的不断提高,越来越多的大型工程活动开工建设,系统工程作为一门高度综合性的管理工程技术,却日趋偏向
Spy 原理初探.包括源代码跟说明文档。内容详细 用Visual Studio搞开发的朋友对Spy 这个工具一定不陌生,它可以分析窗体结构、进程和窗口消息,对开发工作有很大辅助作用。我们需要研究某个对象时,只要调出其查找...
量子信息网络概念原理与发展前景初探.docx
很不错的tomcat学习手册 很不错的tomcat学习手册
主要讨论车铣加工的特点及其计算机仿真原理的数学建模方法,为进一步研究仿真系统和程序的开发提供理论依据和基础。
JVM初探- 内存分配、GC原理与垃圾收集器,从从提上讲解了jvm中GC的原理、基本的算法和针对不同内存区使用的算法,同时,详细的讲解了当前主要使用的垃圾收集器
融合Matlab仿真通信系统的通信原理教学初探
压缩空气储能系统调相运行模式初探.docx
融合Matlab仿真通信系统的通信原理教学初探.pdf
Android系统ROM刷机原理及ROM制作技术初探
主要介绍了C#之CLR内存原理初探,有助于读者进一步理解C#的运行原理,需要的朋友可以参考下