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 哈希的新方法称为炉哈希