目录
一.实验概述
1.算法描述
LZW压缩算法是一种无损数据压缩算法。在众多的压缩技术中,LZW算法是一种通用的、性能优良并得到广泛应用的压缩算法,它是一种完全可靠的算法,与其他算法相比,往往具有更高的压缩效率。LZW算法保留了LZ码的自适应功能,压缩比也大致相同,其显著特点是逻辑简单(典型的LZW算法处理1个字符不超过三个时钟周期)、硬件实现廉价、运算速度快,在消息长度为一万字符数量级时可以得到令人满意的压缩效果。
二.实验目的
掌握词典编码的基本原理,用C/C++/Python等语言编程实现LZW解码器并分析编解码算法
三.实验原理
1.LZW编码原理
核心思想:
词典初始化为包含所有的单字符,当前前缀串P为空。
输入数据流中的下一个字符C,
判断P+C是否在词典中
(1)存在
将P+C作为新的前缀串赋给P
(2)不存在
输出P对应的码字CW,将P+C录入词典,再将C作为新的前缀串赋给P
2.LZW解码原理
(1)读入码字流中的的第一个码字,赋给CW
(2)并将Dictionary[CW]赋给将要输出的字符流(解码)
(3)将CW赋给PW作为前缀串,同时CW接受码字流中的下一个新码字
(4)将Dictionary[PW]赋给P,将Dictionary[CW]赋给C
(5)判断P+C是否存在于词典中,如果不存在(且词典有足够的空间),就将P+C作为新词条写入
(6)将CW赋给PW作为新的前缀串,重复以上步骤
3.代码
1.bitio.h
#ifndef __BITIO__
#define __BITIO__