c_cpp 在C中进行djb2哈希测试,使控制台能够测试哈希值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 在C中进行djb2哈希测试,使控制台能够测试哈希值相关的知识,希望对你有一定的参考价值。

#include <stdio.h>

//c program hash tester

unsigned long
hash(unsigned char *str)
{
    unsigned long hash = 5381;
    int c;

    while (c = *str++)
        hash = ((hash << 5) + hash) + c; /* hash * 33 + c */

    return hash;
}

#define HASHTABLE 5000

void hashconsole()
{
  int running = 1;
  unsigned char key[100];
  printf("Hash Tester-----\n");
  while(running)
  {
    printf("Enter a key: ");
    scanf("%s", key);
    if(key[0] == ']') { printf("Shutting down\n"); break; }
    printf("The hash for %s is %d\n", key, hash(key) % HASHTABLE);
  }
}


int main()
{
    hashconsole();
    return 0;
}

以上是关于c_cpp 在C中进行djb2哈希测试,使控制台能够测试哈希值的主要内容,如果未能解决你的问题,请参考以下文章

为啥 5381 和 33 在 djb2 算法中如此重要?

Dan Bernstein 的 Djb2 哈希函数:当我们只能乘以 33 时,为啥还要使用按位运算符?

我如何将 djb2 映射到哈希表?

djb2:一个产生简单的随机分布的哈希函数

c_cpp 在C中的哈希表,它可以解决重复问题。

c_cpp 哈希的新方法称为炉哈希