LZW编解码c++实现

本文详细介绍了LZW编解码的理论、编码算法和解码过程,并提供了C++代码实现。通过例子说明了编码过程中如何利用字典进行字符串压缩,以及解码时如何还原编码字典,最终实现数据的压缩与解压缩。
摘要由CSDN通过智能技术生成

参考:(22条消息) LZW编解码详解_hanzhen7541的博客-CSDN博客_lzw编码

一.理论

二.编码算法

三.解码过程

四.代码实现(c++)

一.理论

把出现过的字符串映射到记号上,这样就可能用较短的编码来表示长的字符串,实现压缩。

给定一个初始字典,编码时生成补充后的字典,但不会保留,解码时再还原出编码时的字典。

二.编码算法

编码器从原字符串不断地读入新的字符,并试图将单个字符或字符串编码为记号 (Symbol)。这里我们维护两个变量,一个是P (Previous),表示手头已有的,还没有被编码的字符串,一个是C (current),表示当前新读进来的字符。

1. 初始状态,字典里只有所有的默认项,例如0->a,1->b,2->c。此时P和C都是空的。 2. 读入新的字符C,与P合并形成字符串P+C。 3. 在字典里查找P+C,如果: - P+C在字典里,P=P+C。 - P+C不在字典里,将P的记号输出;在字典中为P+C建立一个记号映射;更新P

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值