0

我正在尝试为图像创建一个散列函数,以便从数据库中找到类似的图像。哈希只是一系列位 (101110010),其中每个位代表一个像素。由于每个图像大约有 60 个像素,我认为最好将其保存为 UInt64。

现在,当遍历每个像素并计算每个位时,我如何将它们连接起来并将它们保存为 UInt64?

谢谢你的帮助。

4

2 回答 2

4

使用一些小玩意:

long mask = 0;

// For each bit that is set, given its position (0-63):
mask |= 1 << position;
于 2013-01-30T19:09:03.307 回答
3

您可以像这样使用按位运算符:

ulong it1 = 0;
ubyte b1 = 0x24;
ubyte b2 = 0x36;
...
it1 = (b1 << 48) | (b2 << 40) | (b3 << 32) .. ; 

或者,您可以使用该BitConvert.Uint64()函数将字节数组快速转换为 int64。但是你确定目标是 8 字节长吗?

于 2013-01-30T19:08:51.877 回答