DJB2哈希函数编辑

时间:2015-03-15 17:20:32

标签: c++ hash string-hashing

我在哈希程序中使用DJB2哈希函数,我想存储字符串。但是这个散列函数返回一个非常大的unsigned int值作为返回值(散列表索引)。如果我的表格大小很小(例如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;
}

1 个答案:

答案 0 :(得分:0)

如果您想将较大的值转换为较小的值,则碰撞的可能性更大。较大的字符串足以避免碰撞。