您的位置:首页 > 其它

ELF Hash Function(哈希表处理字符串)

2012-11-01 08:07 246 查看
[cpp] view plaincopyprint?
01.C/C++ code

[cpp] view plaincopyprint?
01.unsigned  int  ELFHash( char   * str)
02.{
03.  unsigned  int  hash  =   0 ;
04.  unsigned  int  x     =   0 ;
05.  while  ( * str)
06.  {
07.    hash  =  (hash   < <   4 )  +  ( * str ++ ); //hash值左移4位加上一个字符
08.    if  ((x  =  hash  &   0xF0000000L )  !=   0 )//判断hash值的高4位是否不为0,因为不为0时需要下面特殊处理,否则上面一步的左移4位会把这高四位给移走,造成信息丢失
09.    {
10.      hash  ^=  (x  >>   24 );   //把刚才的高4位跟hash的低5-8位异或
11.      hash  &=   ~ x;            //把高4位清0
12.    }
13.  }
14.  return  (hash  &   0x7FFFFFFF ); //希望hash值是一个非负数
15.}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: