哈希指针值

zwo*_*wol 28 algorithm hash pointers

有时您需要使用指针的哈希函数; 不是指针指向的对象,而是指针本身.很多时候,人们只是将指针值作为整数,将一些高位切断以使其适合,可能会在底部移出已知零位.事实是,指针值不一定在代码空间中很好地分布; 事实上,如果你的分配器正在完成它的工作,那么它们很可能会聚集在一起.

所以,我的问题是,是否有人开发了对此有益的哈希函数?取一个32位或64位的值,可能在某处获得12位熵,并将其均匀地分布在32位数字空间中.

Tho*_*mas 20

此页面列出了几种可能有用的方法.其中一个,由于Knuth,是一个简单的乘法(32位)乘2654435761,但"如果密钥在高位变化,则产生错误的散列结果." 在指针的情况下,这是一个非常罕见的情况.

这里有一些算法,包括性能测试.

似乎魔术词是"整数散列".