[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.}
ELF Hash Function(哈希表处理字符串)
最新推荐文章于 2024-01-17 10:21:44 发布