我有一些文件,有一些随机字节和多个gzip文件.如何在某个文件中找到gzip流的开始和结束?gzip流之间有很多随机字节.所以,基本上我需要找到任何gzip文件并从那里获取它.
每个GZIP文件只是一堆数据块(称为成员),每个文件包含一个数据块.
每个成员都以以下字节开头:
DEFLATE
.0-7是保留值.成员的结尾不是分隔的.你必须实际走完整个会员.请注意,连接多个有效的GZIP文件会创建有效的GZIP文件.还要注意,超过成员仍可能导致成员的成功读取(除非解压缩库失败 - 急切地 - 完全).
搜索三字节 gzip 签名 0x1f 0x8b 0x08。找到它后,尝试解码以 0x1f 开头的 gzip 流。如果你成功了,那么这就是一个 gzip 流,它就在它结束的地方结束。如果该 gzip 流是 1,则从该 gzip 流之后继续搜索;如果不是,则从 0x08 之后继续搜索。然后你就会找到所有这些,你就会知道它们的位置和跨度。