哈夫曼算法解压最终版(解压成功)
来源:互联网 发布:淘宝模板的作用 编辑:程序博客网 时间:2024/06/05 16:50
今天晚上左哥给我们讲解了前天的测试题目后,我又用剩余的时间把哈夫曼解压算法最终版完成了,期间遇到了一个码表补零的小问题,所以出了错误,但是最后还是发现问题,解决了。
哈夫曼解压文件就是:把压缩文件提取码表各个编码的长度,然后对应后面的编码串,把哈夫曼编码串读入解压程序,然后压缩文件再转化成字符串,再对应码表一一解码,最终就可以得到解压后的文件了。
核心代码如下:
public void reCom(FileInputStream fis)throws Exception{FileOutputStream fos = new FileOutputStream("C:\\Users\\asus\\Desktop\\new.txt");String str = "";int value ;int zero;//读取压缩文本的内容,value用来接收读取的整形数据,str用来存储压缩文本转化后的01字符串,zero用来处理末尾补零的字符串while(fis.available()!=0){value = fis.read();str = str + IntToString(value);zero = value;}//26 10110011 11100000 00000100//00011010 10110011 11100000 00000100------>str//00011010 10110011------>preStrzero = StringToInt(str.substring(str.length()-8,str.length()));String preStr = new String();preStr = str.substring(0, str.length()-8-zero);System.out.println(preStr);//preStr为压缩文件的哈夫曼编码,只要按照码表解码就可解压文件int count = 0;String strNew = new String();int last = preStr.length();//解压文件,处理01字符串,对应码表翻译,以下是解码for(int i=0;i<last;i++){strNew = strNew + preStr.substring(0, 1);preStr = preStr.substring(1);System.out.println(i+" "+strNew);while(count<256){//如果字符串匹配上了,就写到解压文件上if(strNew.equals(codestr[count])){strNew = "";fos.write(count);count = 0;break;}else{count++;}}count = 0;}}
下面是结果图片:
快十点了,也该走了。回去洗洗睡了
2 0
- 哈夫曼算法解压最终版(解压成功)
- 解压算法
- 哈夫曼算法解压文件前两步
- 解压
- 解压
- 解压
- 解压
- 解压
- 解压
- 解压
- 解压
- 解压
- 02. 哈夫曼算法与文本压缩、解压
- java zip解压算法
- MySQL 直接解压使用参考(做到成功启动服务)
- 7Bit压缩解压算法
- java算法 -- zip解压,压缩
- 哈夫曼压缩与解压
- 蓝桥杯 历届试题 幸运数
- Ubuntu 14.04 FTP服务器--vsftpd的安装和配置
- HDU 1166敌兵布阵 (线段树)
- C_aop面向切面编程_s
- hrbust 1326 哈理工oj 1326 Leyni的国家【DFS+邻接表建图】
- 哈夫曼算法解压最终版(解压成功)
- 2016几点想法
- 初始化Servlet时配置Log4j
- 使用dom4j读写xml实例
- win10下apache不能正常启动的解决方案之一
- C++实验报告3
- kd树简介 在matlab下VLFeat中的kd-tree使用
- HDOJ 1254 推箱子【bfs && dfs】
- Http请求协议