以及seed1 = ((dwHashType << 8) + ch) ^ (seed1 + seed2);
与 seed2 = ch + seed1 + seed2 + (seed2 << 5) + 3;
为什么要这样获取呢?谢谢各位大神了?
int HashKey(const char* key)
{
int dwHashType = 1;
unsigned long seed1 = 0x7FED7FED, seed2 = 0xEEEEEEEE;
int ch;
while(*key != 0)
{
ch = toupper(*key++);
seed1 = ((dwHashType << 8) + ch) ^ (seed1 + seed2);
seed2 = ch + seed1 + seed2 + (seed2 << 5) + 3;
}
return seed1;
}
2.类似的time33算法的获取哈希值如下,为什么hash初始者要这样定义,以及为什么最后要(hash & 0x7FFFFFFF)呢?谢谢!
unsigned int time33(char *str){
unsigned int hash = 5381;
while(*str){
hash += (hash << 5 ) + (*str++);
}
return (hash & 0x7FFFFFFF);
}
3 个解决方案
#1
hash算法的目的是为了什么, lz知道的话会发现这些问题没有意义。
最后那个&0x7FFFFFFF一般来说是可选的,要看具体应用,我是直接mod样本量
最后那个&0x7FFFFFFF一般来说是可选的,要看具体应用,我是直接mod样本量
#2
![关于暴雪的哈希算法与time33算法,小白有个问题不解 关于暴雪的哈希算法与time33算法,小白有个问题不解](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9nby9hSFIwY0hNNkx5OW1iM0oxYlM1amMyUnVMbTVsZEM5UWIybHVkRVp2Y25WdEwzVnBMM05qY21sd2RITXZZM05rYmk5UWJIVm5hVzR2TURBekwyMXZibXRsZVM4eUxtZHBaZz09.jpg?w=700&webp=1)
#3
hash算法的目的是什么?
衡量一个hash算法的好坏标准是什么?
衡量一个hash算法的好坏标准是什么?
#1
hash算法的目的是为了什么, lz知道的话会发现这些问题没有意义。
最后那个&0x7FFFFFFF一般来说是可选的,要看具体应用,我是直接mod样本量
最后那个&0x7FFFFFFF一般来说是可选的,要看具体应用,我是直接mod样本量
#2
![关于暴雪的哈希算法与time33算法,小白有个问题不解 关于暴雪的哈希算法与time33算法,小白有个问题不解](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9nby9hSFIwY0hNNkx5OW1iM0oxYlM1amMyUnVMbTVsZEM5UWIybHVkRVp2Y25WdEwzVnBMM05qY21sd2RITXZZM05rYmk5UWJIVm5hVzR2TURBekwyMXZibXRsZVM4eUxtZHBaZz09.jpg?w=700&webp=1)
#3
hash算法的目的是什么?
衡量一个hash算法的好坏标准是什么?
衡量一个hash算法的好坏标准是什么?