我试图在Linux上读取FAT32文件系统的一部分。我很难读取应该位于偏移量28(0x1C)且应具有4字节大小的隐藏扇区的数量。可以在here和there中找到对此的参考。
已使用gparted创建了Fat32文件系统。当我使用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,该值应为Little Endian。现在,我已经读取了4个字节,我试图将它们解析为一个整数,如下所示:
int totalNumSectors = (buffer[3] << 24) | (buffer[2] << 16) | (buffer[1] << 8) | (buffer[0]);
这给我一个1590288的可笑值。
我在做什么错了?