Zlib数据格式

The zlib compressed data format is described at http://www.ietf.org/rfc/rfc1950.txt

The deflate compression algorithm is described at http://www.ietf.org/rfc/rfc1951.txt

CMF(1Byte)

FLG(1Byte)

DICTID

Compressed Data

Adler32(4Byte)

CM | CINFO

FCHECK | FDICT | FLEVEL

 

 

 

CMF ( Compressed Method and Flag ) 1个字节。这个字节由两部分组成,一部分为低4位的压缩方法(CM),另一部分为高4位的压缩信息(CINFO)。

CM(Compressed Method):即压缩方法。标明在此压缩文件中所采用的压缩方法。CM=8表示在32windows中使用的deflate压缩方法。GZIP  PNG使用的就是这种压缩方法。CM=15为保留值,可能会在以后的版本中在压缩数据之前使用来指明存在一个扩展。

CINFO(Compression info):压缩信息。对于CM=8CINFO是以2为底,LZ77 window大小的对数,-8(即7表示是32window大小)。在本版本的说明文档中,大于7CINFO都是非法的。对于CM不等于8的值,本说明文档中CINFO都为未定义的。

FLGFlaGs):1个字节。这个字节分为三部分,低5位为FCHECK,高两位为FLEVEL,中间一位为FDICT

FCHECK

FDICTPreset dictionary):如果设置了FDICT,则FLG字节之后就是一个DICT字典标识符。字典由一系列字节组成,在压缩开始时提供给压缩器使用,而不用产生任何压缩后的输出。DICT就是这组序列字节的Adler32校验码。解压器可以通过此码来判别压缩器使用的是哪个字典。

FLEVELCompression level):这些标记只针对指定的压缩方法才有效。”deflate”方法(CM=8)设置的标记如下:

        0 —压缩器使用最快速算法

        1 —压缩器使用快速算法

        2 —压缩器使用默认的算法

        3 —压缩器使用质量最高压缩,速度最慢算法

        解压缩时并不需要FLEVEL的信息;只是用来说明是否值得重新压缩。

Compressed Data:对于压缩算法为8CM=8),即由ZIP格式数据中取出的压缩后的数据(使用deflate压缩格式),此部分数据在AIR中可以直接使用deflate方式的解压方法解压出来。其他的压缩数据格式在此版本的Zlib说明文档中未指明。

Adler32Adler-32 checksum):4个字节。这个字段包含的是根据Alder-32算法计算出来的未压缩数据(不包括任何的字典数据)的校验和。Adler-32是由对每个字节计算所得出的两个和所组成的:S1是所有字节的和,S2是所有S1的和。两个和都要对65521取模。S1初始化为1S2初始化为0Adler-32校验和以S2*65536 + S1的形式,按照最高加权位第一(MSB)的顺序存储

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值