Posts Tagged ELF hash

ELF Hash

ELF hash是对字符串进行hash操作时的常用函数
这个算法将一个字符串的数组中的每个元素依次按前四位与上一个元素的低四位相与,组成一个长整形,如果长整的高四位大于零,那么就将它折回再与长整的低四位相异或,要注意最后得到的整型不是唯一的,一开始因为不知道这个吃过亏。

  1. int ELFhash(char *key)
  2. {
  3.     unsigned long h = 0;
  4.     unsigned long g;
  5.     while( *key )
  6.     {
  7.         h =( h<< 4) + *key++;
  8.         g = h & 0xf0000000L;
  9.         if( g ) h ^= g >> 24;
  10.         h &= ~g;
  11.     }
  12.     return h;
  13. }

No Comments