美文网首页
zip包格式分析

zip包格式分析

作者: 逍遥才子 | 来源:发表于2023-05-05 10:23 被阅读0次

    ZIP包的格式是一种二进制格式,它由一系列字节组成,每个字节都有特定的含义。下面是ZIP包格式中常见的字节和它们的含义:

    1. 文件头标识符(Local File Header):标识文件的开始。

      • 字节1-4: 0x50 0x4B 0x03 0x04(固定值)
      • 字节5-6: 压缩方法(例如,0x08 表示使用 DEFLATE 压缩)
      • 字节7-8: 一些标志位,如是否加密、是否有数据描述符等
      • 字节9-10: 压缩时间
      • 字节11-12: 压缩日期
      • 字节13-16: CRC32 校验和
      • 字节17-20: 压缩后的文件大小
      • 字节21-24: 解压缩后的文件大小
      • 字节25-26: 文件名长度
      • 字节27-28: 扩展字段长度
      • 字节29-x: 文件名
      • 字节x+1-x+y: 扩展字段(可选)
      • 字节x+y+1-末尾: 压缩数据
    2. 数据描述符(Data Descriptor):提供文件的一些信息,如 CRC32 校验和、压缩后的文件大小和解压缩后的文件大小。

      • 字节1-4: 0x50 0x4B 0x07 0x08(固定值)
      • 字节5-8: CRC32 校验和
      • 字节9-12: 压缩后的文件大小
      • 字节13-16: 解压缩后的文件大小
    3. 中央目录文件头(Central Directory File Header):包含每个文件的信息,用于存储整个 ZIP 包的目录结构。

      • 字节1-4: 0x50 0x4B 0x01 0x02(固定值)
      • 字节5-6: 版本号
      • 字节7-8: 版本需要的最低版本
      • 字节9-10: 通用标志位
      • 字节11-12: 压缩方法
      • 字节13-14: 压缩时间
      • 字节15-16: 压缩日期
      • 字节17-20: CRC32 校验和
      • 字节21-24: 压缩后的文件大小
      • 字节25-28: 解压缩后的文件大小
      • 字节29-30: 文件名长度
      • 字节31-32: 扩展字段长度
      • 字节33-34: 注释长度
      • 字节35-36: 磁盘编号开始
      • 字节37-38: 内部文件属性
      • 字节39-42: 外部文件属性
      • 字节43-46: 文件头相对位移

    Local File Header(文件头标识符)是ZIP包中的一个重要部分,它包含了文件的基本信息和文件数据。下面是Local File Header的详细解释:

    1. 字节1-4: 标识符(Signature)

      • 固定值:0x50 0x4B 0x03 0x04
    2. 字节5-6: 压缩方法(Compression Method)

      • 指定文件的压缩方法,常见的压缩方法包括:
        • 0x00:无压缩
        • 0x08:DEFLATE 压缩方法(最常用的压缩方法)
    3. 字节7-8: 通用标志位(General Purpose Bit Flag)

      • 指定了一些标志位的值,用于标识文件的特性,比如是否加密、是否有数据描述符等。
    4. 字节9-10: 压缩时间(Compression Time)

      • 压缩时间的值由两个字节表示,以DOS格式存储。
    5. 字节11-12: 压缩日期(Compression Date)

      • 压缩日期的值由两个字节表示,以DOS格式存储。
    6. 字节13-16: CRC32 校验和(CRC32 Checksum)

      • 用于校验文件内容的完整性,采用CRC32算法计算得出。
    7. 字节17-20: 压缩后的文件大小(Compressed Size)

      • 文件在压缩后的大小,以字节为单位。
    8. 字节21-24: 解压缩后的文件大小(Uncompressed Size)

      • 文件在解压缩后的大小,以字节为单位。
    9. 字节25-26: 文件名长度(File Name Length)

      • 文件名的长度,以字节为单位。
    10. 字节27-28: 扩展字段长度(Extra Field Length)

      • 扩展字段的长度,以字节为单位。
    11. 字节29-x: 文件名(File Name)

      • 文件的名称,以字符串形式表示。
    12. 字节x+1-x+y: 扩展字段(Extra Field)

      • 可选的扩展字段,用于存储额外的文件信息。
    13. 字节x+y+1-末尾: 压缩数据(Compressed Data)

      • 文件的压缩数据,即实际的文件内容。

    Local File Header定义了ZIP包中每个文件的起始位置和文件的基本信息,包括压缩方法、时间戳、文件大小等。这些信息使得ZIP包能够存储和还原文件,并支持文件的压缩和解压缩操作。

    相关文章

      网友评论

          本文标题:zip包格式分析

          本文链接:https://www.haomeiwen.com/subject/kqnaqltx.html