0

我在要存储字符串的散列程序中使用 DJB2 散列函数。但是这个哈希函数返回一个非常大的无符号整数值作为返回值(哈希表索引)。如果我的表尺寸非常小(比如 13),有没有办法将这个大值转换为更小的值。我想尽可能避免碰撞。

DJB2哈希函数代码如下:

unsigned int djb_hash(string s)
{
    int i;
    unsigned int h;
    h = 5381;

    for (i = 0; i < s.size(); i++) 
    {
        h = (h << 5) + h + s[i];
    }

    return h;
}
4

1 回答 1

0

如果您想将较大的值转换为较小的值,那么碰撞的机会就更大。较大的字符串足以避免碰撞。

于 2015-06-25T10:42:43.830 回答