对于 FAT 文件系统,要执行簇到扇区的计算,有据可查的是...
StartOfDataArea + ((ClusterNum - 2) * SectorsPerCluster)
...将计算簇中的第一个扇区。
为什么要从簇号中减去 2 这个值?大多数解释都说这是因为数据区域实际上从簇 2 开始,但为什么呢?计算中考虑的两个簇在哪里?
答案1
前两个扇区保存特殊数据,因此在计算中省略。
您可以在维基百科中找到信息 FAT文件系统的设计, 部分 文件分配表:
FAT 中的前两个条目存储特殊值:
第一个条目(FAT 中的簇 0)保存 FAT ID [...文本已删除...]
第二个条目(FAT 中的簇 1)名义上存储了格式化程序使用的簇链结束标记,但通常始终保存 0xFFF / 0xFFFF / 0x0FFFFFFF,也就是说,除了 FAT32 卷上的位 31-28 之外,这些位通常始终被设置。