文件压缩项目的源代码(完整版):
文件压缩项目: 基于哈夫曼编码的文件压缩源码分享 (gitee.com)
目录
一、什么是文件压缩
文件压缩是指在不丢失有用信息的前提下,缩减数据量以减少存储空间,提高其传输、存储和处理效率,或按照一定的算法对文件中数据进行重新组织,减少数据的冗余和存储的空间的一种技术方法。
二、为什么要压缩文件
- 紧缩数据存储容量,减少存储空间
- 可以提高数据传输的速度,减少带宽占用量,提高通讯效率
- 对数据的一种加密保护,增强数据在传输过程中的安全性
三、压缩的分类
1、有损压缩
有损压缩是利用了人类对图像或声波中的某些频率成分不敏感的特性,允许压缩过程中损失一定的信息;虽然不能完全恢复原始数据,但是所损失的部分对理解原始图像的影响缩小,却换来了大得多的压缩比,即指使用压缩后的数据进行重构,重构后的数据与原来的数据有所不同,但不影响人对原始资料表达的信息造成误解
2、无损压缩
对文件中数据按照特定的编码格式进行重新组织,压缩后的压缩文件可以被还原成与源文件完全相同的格式,不会影响文件内容,对于数码图像而言,不会使图像细节有任何损失。
四、怎么实现文件压缩
而对于文件的压缩,常用的方式有:
1、专有名词采用的固定短语
2、缩短文件中重复的数据
3、给文件中每个字节找一个更短的编码
其中,给文件中每个字节找一个更短的编码这种方式较为常用。因为,文件中的数据在磁盘中都是以字节的方式来进行存储的,一个字节占用8个比特位,如果能够给一个字节找到更短的编码,即少于8个比特位,就可以起到压缩的目的,编码一般分为:静态等长编码和动态不等长编码。
比如:ABBBBCCCCCDDDDDDD字符串。
1、静态等长编码
文件中共有4个不同种类的字符,因为每个字符可以用两个二进制的比特位表示。
字符 | 编码 |
A | 00 |
B | 01 |
C | 10 |
D | 11 |
用等长编码对上述源数据进行压缩:01101110 11110111 11100011 10011110,压缩完成后的结果只占4个字节,压缩率还是比较高的。
该种压缩方式一般要求文件中字符种类比较少,但是一般情况下文件中字节的种类是比较多的。
2、动态不等长编码
根据文件中字节的分布情况获取每个字节的编码。
字符 | 编码 |
A | 100 |
B | 101 |
C | 11 |
D |