当前位置: 首页>>编程语言>>正文


字符串哈希(HASH)函数【来自GLIB】

看了一下GLIB中的GHashTable的源码,比较有用的字符串哈希函数如下:

/**
* Author:puresky
* Date: 2010/12/21
* Purpose: str_hash
*/
#include <stdio.h>
#include <stdlib.h>

//GLIB中的字符串哈希函数[g_str_hash]
unsigned int str_hash(const char *str)
{
const signed char *p = (const signed char*)str;
unsigned int h = *p;
if(h)
{
for(p += 1; *p != '\0'; ++p)
h = (h << 5) - h + *p;
}
return h;
}

int main(int argc, char** argv)
{
const char* str = "abc123456abcdefghijklmnopqrstuvwxyz";
const char* p = str;
while(*p != '\0')
{
printf("%s:%un", p, str_hash(p));
p++;
}
system("pause");
return 0;
}

 

运行结果如下:

1

本文由《纯净天空》出品。文章地址: https://vimsky.com/article/29.html,未经允许,请勿转载。