gzip静态压缩文件格式说明

gzip静态压缩文件格式说明

例1:
“aaaaaaaaaaaaaaaaa” 共17个字符

LZ77编码:
aaaaaaaaaaaaaaaaa
1234567891011121314151617
-12345678910111213141516

a(L=16, D=1)

码流:字符、L,D按下文中的固定表获得
BFINALBTYPE字符aL=16D=1结束字节
110*10010001000101110000000000000

注*:BTYPE需反向读,10→01(固定表)

按字节划分
11010010001000101110000000000000
逆序
01001011010001000000011100000000
4B440700
二进制文件内容:

00000000h: 1F 8B 08 08 E1 5B 68 5F 04 00 61 2E 74 78 74 00 ; .?.醄h_…a.txt.
00000010h: 4B 44 07 00 70 4E C1 1E 11 00 00 00 ; KD…pN?..

内容描述
1F 8BID1 ID2
08CM
08FLG
E1 5B 68 5F修改时间UTC
04XFL
00OS
61 2E 74 78 74 00文件名 a.txt
4B 44 07 00压缩块
70 4E C1 1E原文CRC32=1E C1 4E 70
11 00 00 00原文size=00 00 00 11= 17
字符literal与长度length共用一个码表:(0到287)

字符表:

序号Bits编码
0到143800110000到10111111
144到2559110010000到111111111

长度表:

序号Bits编码
256到27970000000到0010111
280到287811000000到11000111

长度码扩展表:

序号扩展位个数表示长度值编码
257030000001
258040000010
259050000011
260060000100
261070000101
262080000110
263090000111
2640100001000
265111,120001001 + b
266113,140001010 + b
267115,160001011 + b
268117,180001100 + b
269219到220001101 + bb
270223到260001110 + bb
271227到300001111 + bb
272231到340010000 + bb
273335到420010001 + bbb
274343到500010010 + bbb
275351到580010011 + bbb
276359到660010100 + bbb
277467到820010101 + bbbb
278483到980010110 + bbbb
279499到1140010111 + bbbb
2804115到13011000000 + bbbbb
2815131到16211000001 + bbbbb
2825163到19411000010 + bbbbb
2835195到22611000011 + bbbbb
2845227到25711000100 + bbbbb
285025811000101
距离distance码表
序号扩展位个数表示长度值编码
00100000
10200001
20300010
30400011
415,600100+1b
517,800101+1b
629-1200110+2b
7213-1600111+2b
8317-2401000+3b
9325-3201001+3b
10433-4801010+4b
11449-6401011+4b
12565-9601100+5b
13597-12801101+5b
146129-19201110+6b
156193-25601111+6b
167257-38410000+7b
177385-51210001+7b
188513-76810010+8b
198769-102410011+8b
2091025-153610100+9b
2191537-204810101+9b
22102049-307210110+10b
23103073-409610111+10b
24114097-614411000+11b
25116145-819211001+11b
26128193-1228811010+12b
271212289-1638411011+12b
281316385-2457611100+13b
291324577-3276811101+13b

参考文档:GZIP压缩 详细介绍了完整的gzip格式和原理

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值