哈夫曼原理应用--压缩文件
2015-12-24 18:11
288 查看
一:思路
由于用java中的.read()方法读文件返回值是一个0-255之间的数,因此记录下每一个数字出现的频率并将它作为权值就可构建一棵哈夫曼树,根据构建的哈夫曼树我们获得相应字符的编码,然后通过将二进制8位一组转换成一个字符存储,这样就可以使空间变为2进制码文件的1/8,但是由于二进制本身就将文件扩大,因此压缩不是很理想。大约压缩40%-60%;。二:遇到的问题
1:压缩之后存入的实际上是二进制转换成的字符,但是比如00000111转换成7对应的字符,但是在读出来的时候我开始用Integer.toBinaryString();方法,始终有问题,最终解决是自己写了个转换方法,将它按8位处理,不够补0。2:接着上一个问题,前面的8位一组全部都可以处理,但是如果最后余不足8位,要是还将它转换成一个字符,这样读出来要是遇到上面的问题就不知道应该还原多少位了,最后我将他们单独存入了另一个文件。
三:改进的地方
1:自己的压缩文件没有将哈夫曼树的值记录进压缩文件,因此压缩与解压缩都在一个程序。2:算法的问题导致压缩率不是很高。(能否用些高级数据结构或者其他提高压缩率?)
源代码:点这里
相关文章推荐
- 一个常见的错误..
- 汇编优化工具
- iOS UIBezierPath类 介绍
- Launch Screen在iOS7/8中的实现
- web实时聊天整理
- linux 下 httpd 2.4 的编译安装
- SuperSpider——打造功能强大的爬虫利器
- 工作学习报告--java基础(1)
- ANR检查定位分析工具
- Java Web整合开发(王者归来)书本源码(光盘上所有内容)
- 二维数组分页 排序
- SuperSpider——打造功能强大的爬虫利器
- 手机日期插件jquery mobiscroll 实例
- eclipse打开文件目录(资源管理器)
- 怎么用迅雷下载百度网盘中的…
- maven项目 访问部分html或jsp…
- PowerDesigner:显示工具箱
- SqlServerExpress2005 自动备份
- 调用函数fac计算值和求标准差的题目的问题
- 解决eclipse编辑javascript很卡的…