我正在尝试为图像创建一个散列函数,以便从数据库中找到类似的图像。哈希只是一系列位 (101110010),其中每个位代表一个像素。由于每个图像大约有 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 字节长吗?