云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 用C++实现数据无损压缩、解压(使用LZW算法)

用C++实现数据无损压缩、解压(使用LZW算法)

  • 62 次阅读
  • 3 次下载
  • 2025/6/13 3:34:24

oldcode = code; } else {

StrFromCode(&s, oldcode); StrJoinChar(&s, s.string[0]); WriteString(dest, s); AddTableEntry(s); switch(ItemPt) {

case 511: Bits = 10; break; case 1023: Bits = 11; break; case 2047: Bits = 12; break; }

oldcode = code; } } }

free(t.string); free(s.string);

*len = BytePt + (BitPt != 0); return OutBytes; }

LZWCoder::LZWCoder() {

unsigned int i;

for(i = 0; i < 4097; i ++) {

StrTable[i].string = NULL; StrTable[i].len = 0; } }

LZWCoder::~LZWCoder() {

unsigned int i;

for(i = 0; i < 4097; i ++) free(StrTable[i].string); } 用法:

LZWCoder *Coder; Coder = new LZWCoder();

然后用

Coder->Encode(char *src, unsigned int len, char *dest); Coder->Decode(char *src, unsigned int *len, char *dest);

进行压缩或解压。Encode函数中,src是输入数据的指针,len是输入数据的长度,dest是输出数据的指针。函数返回输出数据的长度。Decode函数中各参数与Encode类似,但*len会返回解压过程使用了输入数据的字节数(一般等于压缩时输出数据的长度)。使用时把要压缩的数据分成每段8K来处理,效果会比较好。

算法实现没做优化,速度比较慢。

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

oldcode = code; } else { StrFromCode(&s, oldcode); StrJoinChar(&s, s.string[0]); WriteString(dest, s); AddTableEntry(s);

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com