协议编码压缩

时间:2022-09-16 15:59:50

几种压缩算法原理介绍  http://www.cppblog.com/windcsn/archive/2006/01/06/2476.aspx

数字压缩编码技术  http://cs.nju.edu.cn/yangxc/dcc2003.files/jszc-sub/jszc-043.html

 

无损压缩比较常见和有效的是:LZW,霍夫曼和算术编码

 

LZW算法:

参考文章

LZW数据压缩算法的原理分析 http://www.cnblogs.com/jillzhang/archive/2006/11/06/551298.html

LZW算法 http://baike.baidu.com/view/401141.htm

Lempel–Ziv–Welch  http://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Welch

LZW算法  http://blog.sina.com.cn/s/blog_6ddaacb30100rcuk.html 讲了编码和解码

http://www.dspguide.com/ch27/5.htm

各种语言的实现源码 http://rosettacode.org/wiki/LZW_compression#C

两个靠谱的C和C++源码实现 http://www.zabkat.com/blog/24Jan10-lzw-compression-code.htm   http://michael.dipperstein.com/lzw/

基本思想——建立一个字符串表,把每一个第一次出现的字符串放入串表中,并用一个数字来表示,这个数字与此字符串在串表中的位置有关,并将这个数字存入压缩文件中,如果这个字符串再次出现时,即可用表示它的数字来代替,并将这个数字存入文件中。

协议编码压缩

算法简单,而且传输的时候不用传输串表,可以根据压缩数据重新生成串表,这样就减少了很多带宽,不像霍夫曼算法需要传递一个对应表。

对于LZW算法,重复越多压缩比越大,但文件也不能过长,否则会适得其反,一般1M以内。

 

对于解码过程,和编码过程相反,有一点要注意如果当前C表示的字符数多于一个,我们用C1表示C的第一个,那么为P+C1建立对应关系,而不是P+C;如

P                           C                            out                    data                    code

20  T                  27  TO                       T                         TT                         35

27   TO              29   BE                     TO                       TOB                      36