DJB哈希函数中5381号的原因?

谁能告诉我为什么DJB哈希函数中使用数字5381?

DJB哈希函数是

h(0)= 5381

h(i)= 33 * h(i-1)^ str [i]

一个c程序:

unsigned int DJBHash(char* str, unsigned int len)

{

unsigned int hash = 5381;

unsigned int i = 0;

for(i = 0; i < len; str++, i++)

{

hash = ((hash << 5) + hash) + (*str);

}

return hash;

}

回答:

5381只是在测试中导致更少的碰撞和更好的雪崩数量。您几乎可以在每个哈希算法中找到“魔术常数”。

以上是 DJB哈希函数中5381号的原因? 的全部内容, 来源链接: utcz.com/qa/424243.html

回到顶部