LZW数据解压缩算法

时间:2013-09-12 18:16:09

标签: algorithm data-compression

我最近一直在研究用于数据压缩的LZW algorithm 。我已经理解了编码算法,但是,我无法理解将编码数据转换回原始形式的解码算法。

以下是取自here

的解码器的伪代码
string entry;
char ch;
int prevcode, currcode;
...

prevcode = read in a code;
decode/output prevcode;
while (there is still data to read)
{
  currcode = read in a code;
  entry = translation of currcode from dictionary;
  output entry;
  ch = first char of entry;
  add ((translation of prevcode)+ch) to dictionary;
  prevcode = currcode;
}

我正在寻找这段代码的分步说明。

编辑:我不明白的是:为什么我们有3个不同的字符串,即条目 prevcode currcode ?在我看来,一个应该是编码的字符串,第二个应该是创建的输出字符串。那么第三个字符串在那里做什么?

其次,我真的不理解代码的倒数第二行中 (prevcode的翻译)+ ch 的目的。

感谢。

1 个答案:

答案 0 :(得分:2)

如果您了解压缩部分,您还应该能够理解为了使解压缩工作,解压缩程序需要从解压缩的数据中重建压缩表,就像在压缩期间构建一样 - 否则进入的代码不是普通的字符代码将毫无意义。这就是这些额外陈述的作用。