基于哈弗曼编码实现高压缩和解压缩的C#源码,压缩效率高,源码呈现给大家,共同学习
2022-05-30 20:00:23 204KB 哈弗曼 编码 压缩 解压缩
1
打开一篇英文文章,统计该文章中每个字符出现的次数,然后以它们作为权值,设计一个哈夫曼编/译码系统。
2022-05-27 15:48:52 1.63MB 编码 译码 哈弗曼树
1
利用哈弗曼树实现的文件压缩程序,内含完整VS项目,实现的功能有普通压缩,加密压缩(当然是特别简单的加密方式),解压,用mfc编写的图形界面。
2022-05-21 21:34:09 101.94MB 哈弗曼树与 文件压缩
1
实现任意二到九进制数的赫夫曼编码,通过选择不同的进制实现对应的编码。运行程序,选择进制数后,输入信源个数、信源符号和概率进行相应进制的编码。编码结束后,输出编码结果,并计算平均码长、信息率、编码效率并判断是否满足克拉夫特不等式和变长编码定理。
2022-04-03 01:01:30 489KB m进制,C++
1
利用哈夫曼编码进行信息通讯可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站写一个哈夫曼码的编译码系统。
2022-02-22 08:38:31 310KB 哈弗曼算法 编码 译码
1
压缩过程可能需要几分钟 2. 使用霍夫曼编码原理(参照以前的作业), 对于任意一个文件进行压缩,压缩后的文件名为原文件名称去掉后缀加上.hz,例如,原来的未压缩文件的名字为a.txt,压缩后为a.hz,压缩后的文件信息使用TLV结构(TYPE-LENGTH-VALUE),文件信息包括霍夫曼编码码表,文件名称,文件长度,文件访问时间等,当然还包括压缩的内容。 要求:(a) 提供压缩与解压缩功能,提供查看压缩文件信息功能。 (b) 需要使用的类有File, 以及霍夫曼压缩作业提供的程序。 (c) 压缩内容不再是文本字符数据,而是任意二进制文件,请压缩附件中的“全球变暖的公益广告视频”(qqbn_gygg.flv)。 注意:(a) 先假设压缩的文件的长度都不大,不考虑效率问题,可以使用缓存。 (b) 以前的霍夫曼压缩文件的程序可以参考,可以修改。
2022-02-16 21:52:34 3.65MB 小学期 java 压缩 哈弗曼
1
该文件,不是C/C++语言写的哈弗曼算法,而是基于MATLAB下的哈弗曼编码算法,可用于图像压缩处理,可以计算出压缩率。有兴趣的同学可以下载看看。
2022-02-15 20:08:55 2KB hafuman matlab
1
用MATLAB实现用哈弗曼编码压缩纯英文文本文件,并能解压缩。
2022-02-11 18:19:44 4KB MATLAB 哈弗曼
1
图形化输出哈弗曼树-数据结构
2021-12-26 09:17:29 3KB 哈弗曼树 数据结构
1
1.纸牌游戏 任务:编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次, 直到最后一张牌;...再依次5的倍数的牌翻一次,6的,7的 直到 以52为基数的 翻过,输出:这时正面向上的牌有哪些? 题目比较简单。但用了MFC的一些知识,实现了图形化,比较形象。 2.哈弗曼压缩 实现哈弗曼压缩及解压缩功能,并计算压缩前后文件占用空间比 模型建立与题目分析 压缩: 以二机制可读形式打开源文件,以二进制可写形式打开压缩目标文件。每次从源文件读取八个比特(一字节),作为一个ASCII码,并统计所有出现的字节的频率,将字节作为哈夫曼数的叶子结点插入到一个链表中。然后根据链表建立哈夫曼树,按照哈夫曼算法对所有出现的字节编码。然后重新从头开始读源文件,每次读入一字节,从哈夫曼树相应叶子结点移到树的根结点,在找的过程中,把其哈夫曼编码存入一个栈,把栈中所有元素(0或1)写到缓冲区,如果缓冲区比特数到8了,则将缓冲区的8个比特(一个字节)写入压缩文件。如果最后缓冲区不到8比特,则在低位补零,补齐8位后写入压缩文件。 解压: 以二进制可读形式打开解压文件,以二进制可写形式打开解压目标文件。每次从解压文件读一个字节,放入缓冲区,然后从缓冲区每次读一个比特。在建立的哈夫曼树中,从根结点开始,取出的比特为0则取左孩子,为1取右孩子,直至到叶子结点,把叶子结点的字节(ASCII码)写入解压目标文件。读到缓冲区为空时,再读入一个字节,重复上述操作,直到读完压缩文件。 模型实质: 以二进制读取文件。从源文件每次读一个字节(8比特),并统计所有出现字节的频率,根据频率对所有字节以频率作为权值建立哈夫曼树,对每个字节重新编码。根据新的编码进行编码译码。 算法设计与分析 如果已知出现字符的出现频率,将较短的比特串分给高频字符,将较长的比特串分给低频字符,则会到压缩文件的目的。哈夫曼编码就是利用这一点,以字符作为叶子结点,以其频率作为权值,建立最优二叉树。 一 下面先重点讨论一下建立哈夫曼数的算法。哈夫曼算法: 根据给定叶子结点及其权值(这里即字符及其频率)构成二叉树的集合,每个叶子结点作为一棵树的根结点。 在二叉树集合中选取根结点权值最小的树作为左右子树构造新的二叉树,且新二叉树的权值为左右子树权值之和。 从二叉树集合中删除这两棵树,将新构造的树加入集合 4 . 重复2,3,直至二叉树集合中只有一棵树。
1