- 2
- 0
- 约 18页
- 2017-01-21 发布于江苏
- 举报
压缩器与解压器[精选]
《数据结构与算法分析》课程设计报告
课题名称:压缩器/解压器
课题负责人名(学号):王明星(
指导教师:王爱平
成绩:
意见:
目录
需求分析***************************************3
概要设计****************************************3~5
详细设计****************************************5~16
运行结果及其分析****************************************16~18
用户手册****************************************18
程序附录****************************************18
课程设计总结****************************************18
参考文献****************************************18
压缩器/解压器
学生:王明星 指导老师:王爱平
【摘要】:在现代信息社会发展到今天这种程度的时候,网络的出现带给人们生活中极大的方便,但随之而来的是信息量的增大,这就要对之进行处理,使之能够便于存储,这就要压缩器和解压器的帮忙了,用压缩器奖大的文件压缩为较小的文件后,存储起来,要用的时候,用解压器将之还原,就可以使用了。这就是压缩器和解压器的作用了。
【题目】
为了节省存储空间,常常需要把文本文件采用压缩编码方式存储。例如: 一个包含 1000个X的字符串和2000个Y的字符串的文本文件在不压缩时占用的空间为3002字节(每个X或每个Y占用一个字节,两个字节代表文件用来表示字符串的结尾).同样是这个文件,采用游程长度编码,可以存储为字符串1000X2000Y,仅为10个字符.占用12个字节,若采用2进制表示,则更加节省空间,上例中的字符串用8个字节来存储,当要读取编码文件时,需要对其解码,由压缩器对其编码,解压器对其解码.
要求:用游程-长度编码+LZW编码实现
需求分析
本演示程序中,文本集合元素限定为{a,b,c,……,z,0,1,2,…9}时,用实例检测压缩器和解压器的运作,输入的为本文文件(.txt),输出的为一种自定义的文件(.nz),测试压缩器解压器会不会出现抖动,如果出现,需选取合适的集合来适应一般的情况。
演示程序以用户和计算机对话得以实现,即在计算机终端显示“提示信息”后,新建个相应要压缩的.TXT文件,输入该文件的文件名,程序就会将改文件压缩为.nz的文件,后解压为.txt文件。
测试数据
测试数据为文本字符集合{a,b,c,……,z,0,1,2,…9},来测试压缩器和解压器。
概要设计
要实现上述功能,了解游程长度编码和LZW编码的基本原理及基本算法。
(1)、游程长度编码
游程长度编码是栅格数据压缩的重要编码方法,它的基本思路是:对于一幅栅格图像,常常有行(或列)方向上相邻的若干点具有相同的属性代码,因而可采取某种方法压缩那些重复的记录内容。其编码方案是,只在各行(或列)数据的代码发生变化时依次记录该代码以及相同代码重复的个数,从而实现数据的压缩。
例如对图1所示的栅格数据,可沿行方向进行如下游程长度编码:
(9,4),(0,4),(9,3),(0,5),(0,1)(9,2),(0,1),(7,2),(0,2),(0,4),(7,2),(0,2),(0,4),(7,4),(0,4),(7,4) ,(0,4),(7,4) ,(0,4),(7,4)
游程长度编码对图3-6(a)只用了40个整数就可以表示,而如果用前述的直接编码却需要64个整数表示,可见游程长度编码压缩数据是十分有效又简便的。事实上,压缩比的大小是与图的复杂程度成反比的,在变化多的部分,游程数就多,变化少的部分游程数就少,图件越简单,压缩效率就越高。
游程长度编码在栅格加密时,数据量没有明显增加,压缩效率较高,且易于检索,叠加合并等操作,运算简单,适用于机器存贮容量小,数据需大量压缩,而又要避免复杂的编码解码运算增加处理和操作时间的情况。
[font id=zoom class=zoom]游程长度RL (Run—Length),简称游程或游长,指的是由字符(或信号取样值)构成的数据流中各个字符重复出现而形成的字符的长度.如果给出了形成申的字符,申的长度及申的位置,就能恢复出原来的数据流,游程长度编码(RLC)就是用二进制码字给出这些信息的一类方法。游程长度编码的主要
原创力文档

文档评论(0)