代码之家  ›  专栏  ›  技术社区  ›  Sjoerd222888

读取FAT32隐藏扇区数时出错

  •  1
  • Sjoerd222888  · 技术社区  · 7 年前

    我试图在Linux上读取FAT32文件系统的部分内容。我很难读取应该位于偏移28处(0x1C)且大小应该为4字节的隐藏扇区数。可以找到这个的参考 here there

    已使用 gparted . 当我检查文件系统时 wxHexEditor

    OFFSET: 28 29 30 31
    VALUE:  00 18 44 10
    

    现在我试图用以下命令读取文件系统文件:

    std::ifstream deviceFile;
    char* buffer = new char [4];
    deviceFile.seekg(0, std::ios::beg);
    deviceFile.ignore(28);
    deviceFile.read(buffer, 4);
    

    根据这个 wikipedia page the design of FAT32

    int totalNumSectors = (buffer[3] << 24) | (buffer[2] << 16) | (buffer[1] << 8) | (buffer[0]);
    

    但这给了我一个1590288的荒谬值。

    我做错什么了?

    0 回复  |  直到 7 年前