几种字符串HASH函数

January 7th, 2009 by Bruce Dou Views:120

ELFhash函数

 

C++代码
  1. int ELFhash(char* url,int size)   
  2.   
  3. {   
  4.   
  5.       unsigned int h=0;   
  6.   
  7.       while (*url)   
  8.   
  9.       {   
  10.   
  11.             h=(h<<4) + *url++;   
  12.   
  13.             unsigned int g= h & 0xF0000000;   
  14.   
  15.             if (g)   
  16.   
  17.                   h^=g>>24;   
  18.   
  19.             h&=~g;   
  20.   
  21.       }   
  22.   
  23.       return h%size;   
  24.   
  25. }   
  26.   

HfIp函数

 

C++代码
  1. unsigned int HfIp(char* url,int size)   
  2.   
  3. {   
  4.   
  5.       unsigned int n=0;   
  6.   
  7.       char* b=(char*)&n;   
  8.   
  9.       for (int i=0;i<strlen(url);i++)   
  10.   
  11.             b[i%4]^=url[i];   
  12.   
  13.       return n%size;   
  14.   
  15. }   

hf函数

 

C++代码
  1. int _―hf(char* url,int size)   
  2.   
  3. {   
  4.   
  5.       int result=0;   
  6.   
  7.     char* ptr=url;   
  8.   
  9.       int c;   
  10.   
  11.       for (int i=1; c=*ptr++; i++)   
  12.   
  13.             result += c*3*i;   
  14.   
  15.       if (result<0)   
  16.   
  17.             result = -result;   
  18.   
  19.       return result%size;   
  20.   
  21. }   

Strhash

 

C++代码
  1. unsigned int Strhash(char *str)    
  2.   
  3. {    
  4.   
  5.       register unsigned int h;    
  6.   
  7.       register unsigned char *p;     
  8.   
  9.       for(h=0, p = (unsigned char *)str; *p ; p++)    
  10.   
  11.             h = 31 * h + *p;     
  12.   
  13.       return h;    
  14.   
  15. }   
  16.   
Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay
  • 豆瓣
  • DZone
  • LinkedIn
  • MySpace
  • Reddit
  • RSS

Also see:

  • No Related Post

Tags:

Leave a Reply