1
FATシステムテーブルを調べて、32ビット整数が期待どおりに1ビットずれているかどうかを判断する必要があります。途中で別のファイルのためにジャンプが必要な場合を除き、通常、リストされた場所は現在の場所の+1です。ディスクが破損の問題を抱えている場合、その値は通常、1ビットがノルムの外に設定されることによってオフになります。私は今どのようにチェックしているのかを書いていますが、この機能を実行するためのより簡単で速い方法があるかどうかを知りたいと思います。1ビットが期待数と比較してオフであるかどうかを確認する方法
internal bool CheckFatValueToIndex(int expectedCluster, int recievedValue)
{
/*Clear one bit and compare to expected value
*Return true if expected cluster is 1 bit off*/
if ((expectedCluster | 0x01) == recievedValue || (expectedCluster | 0x02) == recievedValue || (expectedCluster | 0x04) == recievedValue || (expectedCluster | 0x08) == recievedValue || (expectedCluster | 0x10) == recievedValue || (expectedCluster | 0x20) == recievedValue || (expectedCluster | 0x40) == recievedValue || (expectedCluster | 0x80) == recievedValue || (expectedCluster | 0x100) == recievedValue)
return true;
if ((expectedCluster | 0x200) == recievedValue || (expectedCluster | 0x400) == recievedValue || (expectedCluster | 0x800) == recievedValue || (expectedCluster | 0x1000) == recievedValue || (expectedCluster | 0x2000) == recievedValue || (expectedCluster | 0x4000) == recievedValue || (expectedCluster | 0x8000) == recievedValue)
return true;
return false;
}
あなたが一緒に2つの値をXORすることはできません、結果はの力である場合:あなたは、これは(あなたが気にしている場合)に高速である必要があり持っているビットを変更/を破損しました2それは1ビットオフですか? – Quantic