提问者:小点点

C#:如何连接位来创建UInt64?


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

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

谢谢你的帮助。


共2个答案

匿名用户

使用一些旋转:

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字节长吗?