小编典典

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

algorithm

谁能告诉我为什么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;
}

阅读 876

收藏
2020-07-28

共1个答案

小编典典

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

2020-07-28