无法读取FAT32隐藏扇区数

时间:2019-06-01 11:54:45

标签: c++ linux

我试图在Linux上读取FAT32文件系统的一部分。我很难读取应该位于偏移量28(0x1C)且应具有4字节大小的隐藏扇区的数量。可以在herethere中找到对此的参考。

已使用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的可笑值。

我在做什么错了?

0 个答案:

没有答案