gpt4 book ai didi

c++ - CEIL 对于精确的整数除法来说太高了

转载 作者:太空狗 更新时间:2023-10-29 20:05:29 26 4
gpt4 key购买 nike

今天早上我丢失了一堆文件,但因为它们是一个卷,在内部和外部都进行了碎片整理,所以 100% 恢复所需的所有信息都可用;我只需要在需要的地方填写 FAT。

我编写了一个程序来执行此操作,并在我转储到文件的 FAT 拷贝上对其进行了测试,它运行良好,除了少数文件(526 个文件中的 17 个),FAT 链是单一的簇太长,因此与下一个文件交叉链接。

幸运的是,我确切地知道问题出在哪里。我在 EOF 计算中使用了 ceil,因为即使超过一个字节也需要整个额外的簇:

//Cluster    is the starting cluster of the file
//Size is the size (in bytes) of the file
//BPC is the number of bytes per cluster
//NumClust is the number of clusters in the file
//EOF is the last cluster of the file’s FAT chain

DWORD NumClust = ceil( (float)(Size / BPC) )
DWORD EOF = Cluster + NumClust;

此算法适用于所有文件,但大小恰好是簇大小的倍数的文件除外,在这种情况下,它们最终成为一个簇过多。

我想了一会儿,但不知如何去做。看起来应该很简单,但不知何故却出人意料地棘手。

什么公式适用于任何大小的文件?

最佳答案

如果你想要集群的数量,它将是 (size + BPC - 1)/BPC,具有所有整数数据类型。

关于c++ - CEIL 对于精确的整数除法来说太高了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13110959/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com