gzip头部格式

20 篇文章 0 订阅
9 篇文章 0 订阅
注意两个加好表示一个字节(8位)
gzip头的格式:

+---+---+---+---+---+---+---+---+---+---+
|ID1|ID2|CM |FLG|     MTIME     |XFL|OS | (more-->)
+---+---+---+---+---+---+---+---+---+---+

(if FLG.FEXTRA set)

+---+---+=================================+
| XLEN  |...XLEN bytes of "extra field"...| (more-->)
+---+---+=================================+

(if FLG.FNAME set)

+=========================================+
|...original file name, zero-terminated...| (more-->)
+=========================================+

(if FLG.FCOMMENT set)

+===================================+
|...file comment, zero-terminated...| (more-->)
+===================================+

(if FLG.FHCRC set)

+---+---+
| CRC16 |
+---+---+

+=======================+
|...compressed blocks...| (more-->)
+=======================+

 0   1   2   3   4   5   6   7
+---+---+---+---+---+---+---+---+
|     CRC32     |     ISIZE     |
+---+---+---+---+---+---+---+---+

ID1与ID2:各1字节。固定值,ID1 = 31 (  '\037' ,0x1F),ID2 = 139(  '\213' ,0x8B),指示GZIP格式。
CM:1字节。压缩方法。
0: store (copied)
1: compress
2: pack
3: lzh
4-7: 保留
8: deflate

FLG:1字节。标志。
bit 0 FTEXT - 指示文本数据
bit 1 FHCRC - 指示存在CRC16头校验字段
bit 2 FEXTRA - 指示存在可选项字段
bit 3 FNAME - 指示存在原文件名字段
bit 4 FCOMMENT - 指示存在注释字段
bit 5-7 保留

MTIME:4字节。更改时间。UINX格式。
XFL:1字节。附加的标志。
OS:1字节。操作系统    
IDOS
0x00FAT filesystem (MS-DOS, OS/2, NT/Win32)
0x01Amiga
0x02VMS (or OpenVMS)
0x03Unix
0x04VM/CMS
0x05Atari TOS
0x06HPFS filesystem (OS/2, NT)
0x07Macintosh
0x08Z-System
0x09CP/M
0x0aTOPS-20
0x0bNTFS filesystem (NT)
0x0cQDOS
0x0dAcorn RISCOS
0xffunknown 

额外的头字段:(可选的)
若 FLG 的 bit 2 FEXTRA =   的值为1时需要添加一下格式内容
+---+---+-------+----------------------------+
|SI1 | SI2 |  XLEN  | 长度为XLEN字节的可选       |
+---+---+-------+----------------------------+

若 FLG 的 bit 3 FNAME 的值为1时需要添加一下格式内容

+----------------------------------------------+
|              原文件名(以NULL结尾)           |
+----------------------------------------------+

(若  FLG 的  bit 4 FCOMMENT 的值为1时需要添加一下格式内容

+-------------------------------------------------+
|   注释文字(只能使用iso-8859-1字符,以NULL结尾)  |
+-------------------------------------------------+

若  FLG 的  bit 1 FHCRC  的值为1时需要添加一下格式内容

+-------+
| CRC16 |
+-------+

2. 数据部分

通常采用deflate格式的数据

3. 尾部分

CRC32:4字节。原始(未压缩)数据的32位校验和。
ISIZE:4字节。原始(未压缩)数据的长度的低32位。

blog: http://blog.csdn.net/rentiansheng/article/details/8509558
       
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值