データベースから類似した画像を見つけるために、画像のハッシュ関数を作成しようとしています。ハッシュは単純に一連のビット(101110010)であり、各ビットは1ピクセルを表します。各画像には約60ピクセルあるので、これをUInt64として保存するのが最善だと思います。
さて、各ピクセルをループして各ビットを計算するとき、それらを連結してUInt64として保存するにはどうすればよいですか?
助けてくれてありがとう。
少しいじる:
long mask = 0;
// For each bit that is set, given its position (0-63):
mask |= 1 << position;
次のようなビット演算子を使用します。
ulong it1 = 0;
ubyte b1 = 0x24;
ubyte b2 = 0x36;
...
it1 = (b1 << 48) | (b2 << 40) | (b3 << 32) .. ;
または、この関数を使用してBitConvert.Uint64()
、バイト配列をint64にすばやく変換することもできます。しかし、ターゲットの長さが8バイトであることを確認しますか?