字符串哈希算法——BKDRHash

BYVoid对常用的几种字符串哈希函数进行了一次小小的评测。其评测结果,按照得分从高到低依次为BKDRHash,APHash,DJBHash,JSHash,RSHash,SDBMHash,PJWHash,ELFHash。

其中,最优的字符串哈希算法BKDRHash函数实现如下:

// BKDR Hash Function
unsigned int BKDRHash(const char *str){
unsigned int seed = 131; // 31 131 1313 13131 131313 etc..
unsigned int hash = 0;

while (*str){
hash = hash * seed + (*str++);
}

return (hash & 0x7FFFFFFF);
}

比如,哈希字符串“Hello,World!”将会得到数字“632968537”。

References: [1] https://www.byvoid.com/zhs/blog/string-hash-compare