读取.zip文件头没有给出正确的输出,结构大小也没有加起来

时间:2017-10-27 01:08:46

标签: c++ struct header zip fstream

我的主要问题是,当读取任何.zip文件时,它不会正确地将数据读入结构中,因此即使文件名正确,filenameLength属性也会设置为0。我用zip.seekg(26)测试并读取了给我正确值的值,这让我觉得我的结构有问题。所以我打印出我的结构的大小,它给出了32,即使所有属性大小加起来等于30.我做错了什么?

struct ZIPHeader
{
    int sig; // 4
    short versionMadeBy; // 6
    short extractorversion; // 8
    short genflag; // 10
    short lastModificationTime; // 12
    short lastModificationDate; // 14
    int crc; // 18
    int compressedSize; // 22
    int uncompressedSize; // 26
    short filenameLength; // 28
    short extraFieldLength; // 30
} zheader;

void PrintZipInfo(const char* dir)
{
    cout << "Sizeofheader: " << sizeof(ZIPHeader) << endl;
    ifstream zip(dir, ios::binary);
    zip.read((char *)&zheader, sizeof(ZIPHeader));
    cout << "File name length: " << zheader.filenameLength << endl;
}

输出

  

Sizeofheader:32

     

文件名长度:0

0 个答案:

没有答案