代码之家  ›  专栏  ›  技术社区  ›  K-D-G

怎么办?当查看十六进制数以获取fat32文件系统的fat项值时是什么意思?

  •  0
  • K-D-G  · 技术社区  · 6 年前

    我正在编写操作系统,因此需要实现一个文件系统。所以我选择了FAT32。我在查找fat条目值,它给出的值是:0x?0000000。所以我的问题是什么?意思是?

    我试过在谷歌上搜索答案,但它只显示十六进制的教程,不包括我问题的答案。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Alexey Frunze    6 年前

    可能是时候读一下官方规范了吧?

    fatgen103.doc说:

    一个fat32的fat条目实际上只是一个28位的条目。FAT32 FAT条目的高4位是保留的。只有在格式化卷时,才应更改高4位的FAT32 FAT项,此时整个32位FAT项应归零,包括高4位。

    更多的解释在这里是有序的,因为这一点关于FAT32脂肪条目似乎引起了大量的混乱。基本上,32位FAT条目不是真正的32位值;它们只是28位值。例如,所有这些32位集群条目值:0x10000000、0xf0000000和0x00000000都表示集群是空闲的,因为在读取集群条目值时忽略高4位。如果32位空闲群集值当前为0x30000000,并且您希望通过在其中存储值0x0ffffff7将此群集标记为坏群集。然后,32位条目在完成后将包含值0x3fffff7,因为在0x0fffff7坏簇标记中写入时必须保留高4位。