1 Star 0 Fork 0

Vantler/foremost

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
extract.h 4.00 KB
一键复制 编辑 原始数据 按行查看 历史
Jin 提交于 2016-02-05 09:21 +08:00 . first commit
/*
local file header signature 4 bytes (0x04034b50)
version needed to extract 2 bytes
general purpose bit flag 2 bytes
compression method 2 bytes
last mod file time 2 bytes
last mod file date 2 bytes
crc-32 4 bytes
compressed size 4 bytes
uncompressed size 4 bytes
filename length 2 bytes
extra field length 2 bytes
*/
/*
central file header signature 4 bytes (0x02014b50)
version made by 2 bytes
version needed to extract 2 bytes
general purpose bit flag 2 bytes
compression method 2 bytes
last mod file time 2 bytes
last mod file date 2 bytes
crc-32 4 bytes
compressed size 4 bytes
uncompressed size 4 bytes
filename length 2 bytes
extra field length 2 bytes
file comment length 2 bytes
disk number start 2 bytes
internal file attributes 2 bytes
external file attributes 4 bytes
relative offset of local header 4 bytes
*/
/* end of central dir signature 4 bytes (0x06054b50)
number of this disk 2 bytes
number of the disk with the
start of the central directory 2 bytes
total number of entries in
the central dir on this disk 2 bytes
total number of entries in
the central dir 2 bytes
size of the central directory 4 bytes
offset of start of central
directory with respect to
the starting disk number 4 bytes
zipfile comment length 2 bytes
zipfile comment (variable size)
*/
struct zipLocalFileHeader
{
unsigned int signature; //0
unsigned short version; //4
unsigned short genFlag; //6
signed short compression; //8
unsigned short last_mod_time; //10
unsigned short last_mod_date; //12
unsigned int crc; //14
unsigned int compressed; //18
unsigned int uncompressed; //22
unsigned short filename_length; //26
unsigned short extra_length; //28
};
struct zipCentralFileHeader
{
unsigned int signature; //0
unsigned char version_extract[2]; //4
unsigned char version_madeby[2]; //6
unsigned short genFlag; //8
unsigned short compression; //10
unsigned short last_mod_time; //12
unsigned short last_mod_date; //14
unsigned int crc; //16
unsigned int compressed; //20
unsigned int uncompressed; //24
unsigned short filename_length; //28
unsigned short extra_length; //30
unsigned short filecomment_length; //32
unsigned short disk_number_start; //34
};
struct zipEndCentralFileHeader
{
unsigned int signature; //0
unsigned short numOfdisk; //4
unsigned short compression; //6
unsigned short start_of_central_dir; //8
unsigned short num_entries_in_central_dir; //10
unsigned int size_of_central_dir; //12
unsigned int offset; //16
unsigned short comment_length; //20
};
void print_zip(struct zipLocalFileHeader *fileHeader, struct zipCentralFileHeader *centralHeader)
{
printf("\n Local Header Data\n");
printf("GenFlag:=%d,compressed:=%d,uncompressed:=%d\n",
fileHeader->genFlag,
fileHeader->compressed,
fileHeader->uncompressed);
printf("Compression:=%d, filename_len:=%d,extralen:=%d\n",
fileHeader->compression,
fileHeader->filename_length,
fileHeader->extra_length);
printf(" Central Header Data\n");
printf("GenFlag:=%d,compressed:=%d,uncompressed:=%d\n",
centralHeader->genFlag,
centralHeader->compressed,
centralHeader->uncompressed);
printf("Compression:=%d, Version Madeby:=%x%x\n",
centralHeader->compression,
centralHeader->version_madeby[0],
centralHeader->version_madeby[1]);
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/vantler/foremost.git
git@gitee.com:vantler/foremost.git
vantler
foremost
foremost
master

搜索帮助