到目前为止,我想到的思路有:
1.选择一个数字,然后扫描列表并查看它是否被使用。反复执行此操作。这种方法速度较慢(特别是如果有很多文件)。
2.与上述方法类似,但使用具有适当种子的伪随机数生成器选择数字。这样做的优点是迭代次数较少。
3.扫描列表并用所有找到的条目填充数组。排序后就变得简单了。这可能会使用大量内存。
4.使用一个巨大的(好吧,非常巨大的)位掩码。不是很实用。
5.接受该工具的寿命是在写入65534个文件到Flash之前就会被丢弃或“格式化”,因此只需将迄今为止使用的最高值存储在Flash或备份内存中并继续递增。老实说,对于这个特定的应用程序,这可能非常有效。
目前,我倾向于使用第二种方法或第五种方法,但如果有人有其他想法,我会很感兴趣。我希望能够找到一种类似于CRC的算法,可以用来处理每个数字,并给出一个没有被使用过的数字的合理估计,但我不知道这应该如何实现。