| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 789 人关注过本帖
标题:LZW压缩疑惑,不懂...
取消只看楼主 加入收藏
最近不在
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:204
专家分:842
注 册:2010-2-28
结帖率:95%
收藏
已结贴  问题点数:20 回复次数:0 
LZW压缩疑惑,不懂...
LZW压缩方法把文本的字符串映射为数字编码。首先,为该文本文件中所有可能出现的字母分别分配一个代码。例如,要压缩的文本文件为:aaabbbbbbaabaaba
字符串由a和b组成,为a分配代码0,为b分配代码1。字符串和编码的映射关系存储在字典中,每个字典的入口有两个域:key和code,由code表示的字符串存在域key中。

code  0   1   2   3    4    5    6     7
key   a   b   aa  aab  bb   bbb  bbba  aaba  

若初始字典如上所示,LZW压缩器不断地在输入文件中寻找在字典中出现的最长的前缀p,并输出相应的代码。若输入文件中下一个字符为c,咋为pc分配下一个代码,并插入字典,这种策略成为LZW规则。
用LZW方法来压缩上例字符串,文件中第一个在字典中出现的最长前缀为a(#1),输出编码0。然后为字符串aa分配代码2,并插入到字典中……
所以,上例中字符串的编码为021453

疑惑:#1处说“文件中第一个在字典中出现的最长前缀为a”,我怎么觉得应该是aa,因为aa比a要长呀。
看了半天,对这个压缩方法也不明白......
搜索更多相关主题的帖子: LZW 压缩 
2010-08-14 16:50
快速回复:LZW压缩疑惑,不懂...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017881 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved