1 unsigned int BKDRHash(char *str) 2 { 3 unsigned int seed = 131; // 31 131 1313 13131 131313 etc.. 4 unsigned int hash = 0; 5 6 while (*str) 7 { 8 hash = hash * seed + (*str++); 9 } 10 11 return (hash & 0x7FFFFFFF); 12 }
1 unsigned int APHash(char *str) 2 { 3 unsigned int hash = 0; 4 int i; 5 6 for (i=0; *str; i++) 7 { 8 if ((i & 1) == 0) 9 { 10 hash ^= ((hash << 7) ^ (*str++) ^ (hash >> 3)); 11 } 12 else 13 { 14 hash ^= (~((hash << 11) ^ (*str++) ^ (hash >> 5))); 15 } 16 } 17 18 return (hash & 0x7FFFFFFF); 19 }