转发:ZIP文件格式详解(一)——文件数据格式

ZIP文件格式详解
本文详细介绍了ZIP文件格式和算法,包括文件数据格式、压缩源文件数据区、压缩源文件目录区及目录结束标志等组成部分。

ZIP文件格式详解(一)——文件数据格式

----------------------------------------------------------------------------------

文档说明

 

ZIP 格式的压缩文件是我们常用的压缩格式之一,他以其通用性、压缩比高而在全球范围内有很多的用户,本文简单介绍 ZIP 文件格式和算法。本文主要参照 http://www.pkware.com 提供的 appnote.txt 文件,你可以从http://www.pkware.com/download.html 下载 appnote.zip 得到这个文件。

 

作者:昏睡终日(Seread@163.com

2002-10-28 16:32:25

 

本文仅作为技术参考资料,我尽力的保证文档的内容同原始技术文档在结构和描述上的一致,若有不当的地方请见谅。

本文档的作者不为使用本文档信息所造成的任何损失负责。

 

----------------------------------------------------------------------------------

 

 

 

 

 

 

 

一个 ZIP 文件的普通格式

----------------------

    一个 ZIP 文件由三个部分组成:
        

        压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志

 

 

    1、压缩源文件数据区

    在这个数据区中每一个压缩的源文件/目录都是一条记录,记录的格式如下:
      

       [文件头+ 文件数据 + 数据描述符]
 
       a、文件头结构

         组成                     长度
      文件头标记                  4 bytes  (0x04034b50)
      解压文件所需 pkware 版本    2 bytes
      全局方式位标记              2 bytes
    压缩方式                    2 bytes
    最后修改文件时间             2 bytes
    最后修改文件日期             2 bytes
    CRC-32校验                  4 bytes
    压缩后尺寸                  4 bytes
    未压缩尺寸                  4 bytes
    文件名长度                  2 bytes

      扩展记录长度                2 bytes
    文件名                     (不定长度)
    扩展字段                   (不定长度)

      

        b、文件数据

 

       

        c、数据描述符

    组成     长度
    CRC-32校验                  4 bytes
    压缩后尺寸                   4 bytes
    未压缩尺寸                   4 bytes

      这个数据描述符只在全局方式位标记的第3位设为1时才存在(见后详解),紧接在压缩数据的最后一个字节后。这个数据描述符只用在不能对输出的 ZIP 文件进行检索时使用。例如:在一个不能检索的驱动器(如:磁带机上)上的 ZIP 文件中。如果是磁盘上的ZIP文件一般没有这个数据描述符。

 

 

     2、压缩源文件目录区

     在这个数据区中每一条纪录对应在压缩源文件数据区中的一条数据

 

      组成                            长度

      目录中文件文件头标记             4 bytes  (0x02014b50)

      压缩使用的 pkware 版本          2 bytes

      解压文件所需 pkware 版本         2 bytes

      全局方式位标记                   2 bytes

      压缩方式                        2 bytes

      最后修改文件时间                 2 bytes

      最后修改文件日期                 2 bytes

      CRC-32校验                 4 bytes

      压缩后尺寸                      4 bytes

      未压缩尺寸                      4 bytes

      文件名长度                      2 bytes

      扩展字段长度                    2 bytes

      文件注释长度                    2 bytes

      磁盘开始号                      2 bytes

      内部文件属性                    2 bytes

      外部文件属性                    4 bytes

        局部头部偏移量                  4 bytes

      文件名                       (不定长度)

      扩展字段                     (不定长度)

        文件注释                     (不定长度)

 

 

    3、压缩源文件目录结束标志

 

       组成                          长度

        目录结束标记                    4 bytes  (0x02014b50)

        当前磁盘编号                    2 bytes

        目录区开始磁盘编号              2 bytes

      本磁盘上纪录总数                 2 bytes

      目录区中纪录总数                 2 bytes

      目录区尺寸大小                   4 bytes

      目录区对第一张磁盘的偏移量        4 bytes

      ZIP 文件注释长度                 2 bytes

      ZIP 文件注释                   (不定长度)

转载于:https://www.cnblogs.com/cmjason/p/3937261.html

本书讨论数据结构和算法分析。数据结构主要研究组织大量数据的方法,而算法分析则是对算法运行时间的评估。随着计算机的速度越来越快,对于能够处理大量输入数据的程序的需求变得日益急切。可是,由于在输入量很大的时候,程序的低效率现象变得非常明显,因此这又要求对效率问题给予更仔细的关注。通过在实际编程之前对算法的分析,学生可以决定个特定的解法是否可行。例如,读者在本书中将读到些特定的问题并看到精心的实现方法是如何把对大量数据的时间限制从16年减至不到1秒的。因此,若无运行时间的阐释,就不会有算法和数据结构的提出。   本书是国外数据结构与算法分析方在的标准教材,介绍了数据结构(大量数据的组织方法)以及算法分析(算法运行时间的估算)。本书的编写目标是同时廛授好的程序设计和算法分析技巧,使读者可以开发出具有**效率的程序。 本书可作为高级数据结构课程或研究生年级算法分析课程的教材,使用本书需具有些中级程序设计知识,还需要离散数学的些背景知识。   随着速度的不断提高和存储容量的持续增长,计算机的功能日益强大,从而处理数据和解决问题的规模和复杂程度与日俱增。这不仅带来了需要认真研究的新课题,而且突出了原有数据结构和算法效率低下的缺点。程序的效率问题不是由于计算机功能的强大而受到冷落,相反地,倒是被人们提到前所未有的重视程度,因为大型问题的解决所涉及到的大容量存储和高速度运算容不得我们对效率有丝毫的忽视。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值