2016-09-18 53 views
0

有没有一种方法可以设计一个散列,使某些键的子集有意映射到相同的值(冲突)?散列 - 目的冲突

例如,如果我希望所有(popcount> = 4)一些64位INT A的子集被映射到X,和相同的对于B映射到Y,等

我想我可以节省一些记忆,如果我只有足够的钥匙由于碰撞。

回答

0

使用模运算,并通过一套HASHKEYS的大小将您的64位值,像这样:

hashKey = _64BitValue mod popcount 

我不知道你正在使用什么语言,但许多现代语言使用%作为模数运算符,有些使用“mod”。

例如,在Java它看起来像:

long hashKey = _64BitValue % popcount; 

这将均匀地分布在你的钥匙随机分配的64位值。