AS3中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.
Zlib数据包格式:
CMF ( Compressed Method and Flag ) :1个字节。这个字节由两部分组成,一部分为低4位的压缩方法(CM),另一部分为高4位的压缩信息(CINFO)。
CM(Compressed Method):即压缩方法。标明在此压缩文件中所采用的压缩方法。CM=8表示在32位windows中使用的deflate压缩方法。GZIP 和 PNG 使用的就是这种压缩方法。CM=15为保留值,可能会在以后的版本中在压缩数据之前使用来指明存在一个扩展。
CINFO(Compression info):压缩信息。对于CM=8,CINFO是以2为底,LZ77 window大小的对数,-8(即7表示是32位window大小)。在本版本的说明文档中,大于7的CINFO都是非法的。对于CM不等于8的值,本说明文档中CINFO都为未定义的。
FLG(FlaGs):1个字节。这个字节分为三部分,低5位为FCHECK,高两位为FLEVEL,中间一位为FDICT。
FCHECK:
FDICT(Preset dictionary):如果设置了FDICT,则FLG字节之后就是一个DICT字典标识符。字典由一系列字节组成,在压缩开始时提供给压缩器使用,而不用产生任何压缩后的输出。DICT就是这组序列字节的Adler32校验码。解压器可以通过此码来判别压缩器使用的是哪个字典。
FLEVEL(Compression level):这些标记只针对指定的压缩方法才有效。”deflate”方法(CM=8)设置的标记如下:
0 — 压缩器使用最快速算法
1 — 压缩器使用快速算法
2 — 压缩器使用默认的算法
3 — 压缩器使用质量最高压缩,速度最慢算法
解压缩时并不需要FLEVEL的信息;只是用来说明是否值得重新压缩。
Compressed Data: 对于压缩算法为8(CM=8),即由ZIP格式数据中取出的压缩后的数据(使用deflate压缩格式),此部分数据在AIR中可以直接使用deflate方式的解压方法解压出来。其他的压缩数据格式在此版本的Zlib说明文档中未指明。
Adler32(Adler-32 checksum):4个字节。这个字段包含的是根据Alder-32算法计算出来的未压缩数据(不包括任何的字典数据)的校验和。Adler-32是由对每个字节计算所得出的两个和所组成的:S1是所有字节的和,S2是所有S1的和。两个和都要对65521取模。S1初始化为1,S2初始化为0。Adler-32校验和以S2*65536 + S1的形式,按照最高加权位第一(MSB)的顺序存储
本文固定链接: http://www.4yue.net/post-90.html
发表评论