Syn*_*ech 3 c++ formula ceil off-by-one
今天早上我丢失了一堆文件,但因为它们的内容和外部碎片整理,所以100%恢复所需的所有信息都可用; 我只需要在必要时填写FAT.
我编写了一个程序来执行此操作并在我转储到文件的FAT副本上对其进行测试,除了对于一些文件(526中的17个)之外,它的工作方式完美,FAT链是一个单独的集群太长,从而与下一个文件交叉链接.
幸运的是,我确切地知道问题是什么.我ceil在EOF计算中使用过,因为即使单个字节结束也需要一个额外的集群:
//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;
Run Code Online (Sandbox Code Playgroud)
此算法适用于除大小恰好是簇大小的倍数的文件之外的所有内容,在这种情况下,它们最终成为一个群集太多.
我考虑了一段时间但是对于这样做的方法感到茫然.看起来它应该很简单,但不知何故,这是非常棘手的.
什么公式适用于任何大小的文件?
| 归档时间: |
|
| 查看次数: |
369 次 |
| 最近记录: |