LZW字典压缩

  LZW字典压缩
    LZW压缩算法是一种新颖的压缩方法,由Lemple-Ziv-Welch 三人共同创造,用他们的名字命名。它采用了一种先进的串表压缩,将每个第一次出现的串放在一个串表中,用一个数字来表示串,压缩文件只存贮数字,则不存贮串,从而使图象文件的压缩效率得到较大的提高。奇妙的是,不管是在压缩还是在解压缩的过程中都能正确的建立这个串表,压缩或解压缩完成后,这个串表又被丢弃。
    前缀prefix:一个词组的前面一个字符,比如ab的前缀为a。
    后缀suffix:一个词组的后面一个字符,比如ab的后缀为b。
    字典的最大长度:我们不能无限增加码表的长度,那样增加压缩的时间复杂度和空间复杂度,计算机内存也吃不消,所以我们采用小于65535的整数来保存字节所对应的编码,由于0~255是系统字节的长度,因此采用256~65535,如果超过该长度,就必须再次编码,将原来所对应的编码输出,将256~65535这一段清空,再次编码。
压缩步骤:
    打开待压缩文件,并按指定路径存放压缩码的文件
    读入一个字节作为后缀,判断这个词在字典中是否出现过,若未出现,则存入字典中,若出现过则直接输出,继续读取。
    若字典超过了最大长度,将当前码表清空。
    最后,将没有写完的信息和码表都输出,压缩完成。
解压步骤:
    读入码表之前的压缩信息;
    读入对应长度的码表;
    翻译编码,写出原文件。

你可能感兴趣的:(缩,压)