# zip协议 [rfc](https://datatracker.ietf.org/doc/html/rfc1952#section-2) * 原始文件 (' ' * 20 + '\n') * 6 * 压缩后文件 ' ' * 20 + '\n' 00000000: 1f8b 0808 4573 c160 0003 3132 332e 7478 ....Es.`..123.tx 00000010: 7400 5350 c004 5c00 8eba 3836 1500 0000 t.SP..\...86.... (' ' * 20 + '\n') * 8 00000000: 1f8b 0808 6874 c160 0003 3132 332e 7478 ....ht.`..123.tx 00000010: 7400 5350 c004 5c58 c468 2308 006b 053f t.SP..\X.h#..k.? 00000020: 9e7e 0000 00 .~... * 解析 1. 头部分 1f8b gzip格式 08 压缩算法 deflate 08 FLG表示 都是08,代表 00001000 表示有名字, 所以我这里都有名字 bit 0: FTEXT bit 3: FNAME 4573 c160 修改时间 0x60c1 7345 = 1623290693 = 2021-06-10 10:04:53 0003 00代表 XFL压缩等级 03代表 Unix系统 3132 332e 7478 7400 文件名 12 3. tx t 以0结尾 2. 内容 5350 c004 5c00 3. 尾部分 CRC32 4字节 8eba 3836 ISIZE 4字节 1500 0000 21字节 因为用4字节,2**32来表示文件大小,所以当文件超过4G时,gzip的 ISIZE 4字节 7e00 0000 126字节