【Qt】哈夫曼树实现文件的压缩和解压

该博客介绍了如何使用QT库实现哈夫曼压缩,特别是在多线程环境下对不同类型的文件(如txt、word、pdf、jpg和mp3)进行压缩的详细过程。通过界面设计和代码展示,作者呈现了一个直观易用的压缩工具,并提供了Github链接以获取完整代码。
摘要由CSDN通过智能技术生成

哈夫曼树以及文件压缩的实现

QT实现哈夫曼压缩(多线程)

一、界面设计

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

QPushButton 
{
    background-color:rgb(255,255,255); 
    color:rgb(6,168,255); 
    border:2px solid rgb(6,168,255); 
    border-radius:10px;
}

QPushButton:pressed
{
    background-color: rgb(175,232,255); 
    color:white; 
    border:2px solid rgb(6,168,255); 
    border-radius:14px;
}

在这里插入图片描述
在这里插入图片描述

QPushButton 
{
    background-color:rgb(255,170,0); 
    color:rgb(0, 0, 0); 
    border:2px solid rgb(255, 255, 127); 
    border-radius:10px;
}

QPushButton:pressed
{
    background-color:rgb(0,255,0); 
    color:rgb(0, 0, 0); 
    border:2px solid rgb(85, 255, 127); 
    border-radius:10px;
}

在这里插入图片描述
在这里插入图片描述

二、代码

代码过多,我放到Github里了,Github地址

三、效果展示

做完之后,

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
txt文件
在这里插入图片描述
在这里插入图片描述

word文件
在这里插入图片描述
在这里插入图片描述
pdf文件
在这里插入图片描述
在这里插入图片描述
jpg文件
在这里插入图片描述
在这里插入图片描述
mp3文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

综合实验: 1. 问题描述 利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。这要求在发送端通过一个编码系统对待传输据预先编码,在接收端将传来的据进行译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。试为这样的信息收发站编写一个哈夫曼码的编/译码系统。 2. 基本要求 一个完整的系统应具有以下功能: (1) I:初始化(Initialization)。从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件hfmTree中。 (2) E:编码(Encoding)。利用已建好的哈夫曼树(如不在内存,则从文件hfmTree中读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件CodeFile中。 (3) D:译码(Decoding)。利用已建好的哈夫曼树文件CodeFile中的代码进行译码,结果存入文件Textfile中。 (4) P:印代码文件(Print)。将文件CodeFile以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码文件写入文件CodePrin中。 (5) T:印哈夫曼树(Tree printing)。将已在内存中的哈夫曼树以直观的方式(比如树)显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint 中。 3. 测试据 用下表给出的字符集和频度的实际统计据建立哈夫曼树,并实现以下报文的编码和译码:“THIS PROGRAME IS MY FAVORITE”。 字符 A B C D E F G H I J K L M 频度 186 64 13 22 32 103 21 15 47 57 1 5 32 20 字符 N O P Q R S T U V W X Y Z 频度 57 63 15 1 48 51 80 23 8 18 1 16 1
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值