哈夫曼压缩
哈夫曼压缩是无损压缩的一种,一般用来压缩文本和程序文件。
压缩步骤:
将要压缩的文件一个一个字节地读出来,统计每个字节出现的次数(作为该叶子节点的权值)。
构建哈夫曼树,采用优先队列。
遍历哈夫曼树,得到每一个叶子节点的哈夫曼编码。(左0右1,得到的是01字符串)
将不足八位的01字符串补0使其达到八位,将每一个八位字符串转换成一个十进制的整数,代码如下;
public static int changeString(String s){
int a = ((int)s.charAt(0)-48)*128+((int)s.charAt(1)-48)*64+((int)s.charAt(2)-48)*32
+((int)s.charAt(3)-48)*16+((int)s.charAt(4)-48)*8+((int)s.charAt(5)-48)*4
+((int)s.charAt(6)-48)*2+((int)s.charAt(7)-48);
return a;
}
然后是,对应哈夫曼编码,将压缩文件解压到指定路径的文件中。
分享到:
相关推荐
vc++哈夫曼压缩算法 vc++哈夫曼压缩算法
哈夫曼压缩与解压缩源码.zip哈夫曼压缩与解压缩源码.zip哈夫曼压缩与解压缩源码.zip哈夫曼压缩与解压缩源码.zip哈夫曼压缩与解压缩源码.zip哈夫曼压缩与解压缩源码.zip哈夫曼压缩与解压缩源码.zip哈夫曼压缩与解压缩...
哈夫曼压缩和解压和解压,数据结构课程设计,c++源码。
哈夫曼压缩与解压缩程序(JAVA)
哈夫曼算法实现图片的压缩,图片有前后对比。
通过自定义算法创建哈夫曼树和编码,对文件进行二进制操作实现压缩和解压。
C语言实现的huffman压缩解压缩算法
哈夫曼压缩与解压算法(可以直接运行),压缩成二进制文件,而且生成了txt文件可以查看哈夫曼编码。C++代码
哈夫曼实现文件的压缩与解压缩,代码关键部分有注释。
每次选出权值最小且没有双亲的两个节点建立新的哈弗曼树。 无栈非递归遍历Huffman树,求Huffman编码。...要注意的是当文件较小时,不宜使用哈夫曼来进行压缩,此时文件头占比过大,会使压缩结果很差。
c++ 哈夫曼压缩源代码. 多种文件格式 亲测可用
java实现的哈夫曼压缩算法,有swing界面。
利用哈夫曼编码对数据进行无损压缩,实现Huffman压缩的编码器和译码器。 1.首先读入待压缩源文件。 2.然后建立并分析字母表,对每种字符的出现频度进行统计,以频度作为建立Huffman树的权值。 3. 频度表建好后,就...
利用哈夫曼算法进行文件的压缩和解压缩。 利用命令行对指定的文件进行压缩和解压缩。 能对一般的文本文件有较好的压缩能力,对其它格式文件可以进行压缩但不一定能有压缩效果。对于用此程序压缩的文件可以用此程序...
压缩解压缩 源码 VC MFC实现 可供学习研究
这里采用哈夫曼编码方式来对每个字符重新编码,因为哈夫曼树具有最小带权路径长度的性质,能够生成用于压缩的二进制前缀码。程序使用的 “静态统计模型”,也就是说在编码前统计要编码的信息中所有字符的出现频率,...
哈夫曼压缩算法的c++实现,你可以学习到你想学的 这也是一个经典的算法设计题
这是一个典型的哈夫曼压缩程序,能压缩各种格式,适合初学者学习。
哈夫曼压缩算法,使用c#编写,先统计输入字串的权重,权重越大越靠近根节点