我正在尝试为图像创建一个散列函数,以便从数据库中找到类似的图像。散列只是一系列位(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) .. ;
或者,您可以使用BitConver. Uint64()
函数将字节数组快速转换为int64。但是你确定目标是8字节长吗?