(7条消息) gzip头部格式
注意两个加好表示一个字节(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: compress2: pack3: lzh4-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字节。操作系统
XFL:1字节。附加的标志。
OS:1字节。操作系统
ID | OS |
---|---|
0x00 | FAT filesystem (MS-DOS, OS/2, NT/Win32) |
0x01 | Amiga |
0x02 | VMS (or OpenVMS) |
0x03 | Unix |
0x04 | VM/CMS |
0x05 | Atari TOS |
0x06 | HPFS filesystem (OS/2, NT) |
0x07 | Macintosh |
0x08 | Z-System |
0x09 | CP/M |
0x0a | TOPS-20 |
0x0b | NTFS filesystem (NT) |
0x0c | QDOS |
0x0d | Acorn RISCOS |
0xff | unknown |
额外的头字段:(可选的)
若 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
赞 (0)