h**o 发帖数: 548 | 1 我大致明白这段程序是把一个字符串 hash 成一个值。就是不知道这里的 31 和 7951
是 随便定的那, 还是由什么著名的算法规定的。求教:
static unsigned int bm_Hash(const void *key, unsigned int size1)
{
unsigned long hashval=0, hv;
unsigned char *s=(unsigned char *)key;
for (hashval = 0; (s != NULL) && (*s != '\0'); s++)
hashval = (*s) + 31*hashval;
hv = hashval*7951;
return (size1)?(hv % size1):0;
} |
|