LZF 算法

//压缩流的第一个字节是控制字节,对literal原义的非压缩起始串,控制字节的高三位如果没有设置,
//则,低位表示原义输出字节的长度,对压缩串而言,其中,高三位如果不全位1,高三位代表回退长度,如果高三位全为111,则,
//回退长度在下一个字节被设置。控制字节的低位和下一个字节形成了回退字符的偏移。
/*lzf采用类似lz77和lzss的混合编码。使用3种“起始标记”来代表每段输出的数据串
* compressed format
*
* 000LLLLL    ; literal ;
        非压缩串起始符号,记录长度为=LLLLL代表的值+1
比如00000011,值3,代表接下来有3+1=4个字符的未压缩字节。
* LLLooooo oooooooo ; backref L ; 压缩串起始符号,
LLL记录回参长度,范围0-6
记录的实际长度为LLL+2,比如011记录的长度是5
000000等位回退步长,值为00000+1,比如00100000 00000001,代表回退2个字符,取长度为3.


* 111ooooo LLLLLLLL oooooooo ; backref L+7 ;压缩串起始符号,当LLL==7时 回参长度=LLLLLLLL+7*/

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