ELFhash 字符串hash函数 //ELF Hash FunctionunsignedintELFHash(char*str) { unsignedinthash =0; unsignedintx =0;while(*str) { hash= (hash <<4) + (*str++);//hash左移4位,把当前字符ASCII存入hash低四位。if((x = hash &0xF0000000L) !=0) {//如果最高的四位不为0,则说明字符多余7个...
ELFhash函数关键是要取得字符串对应的hash值。(别人的分析:它对于长字符串和短字符串都很有效,字符串中每个字符都有同样的作用,它巧妙地对字符的ASCII编码值进行计算,ELFhash函数对于能够比较均匀地把字符串分布在散列表中。这些函数使用位运算使得每一个字符都对最后的函数值产生影响。) ELFhash():参考http://blo...
ELFhash函数 //ELFhash函数int hasher(char *k){ unsigned long h=0,g; while(*k){ h=(h<<4)+*k++; g=h &0xf0000000l; //7个0; if(g) h^=g>>24; h&=~g; } return h;} 附测试:经典字符串Hash函数测试 1-8-22 上午 11:50:37 1 概述 链表查找...
字符串哈希函数ELFHash的理解 unsigned long ElfHash ( const unsigned char *name ) { unsigned long h = 0, g; while ( *name ) { h = ( h << 4 ) + *name++; if ( g = h & 0xF0000000 )//如果最高位不为0,则说明字符已经7个,如果不处理,再加第八个字符时,第一个字符会被移出 //...
unsigned long ElfHash ( const unsigned char *name ) { unsigned long h = 0, g; while ( *name ) { h = ( h << 4 ) + *name++; if ( g = h & 0xF0000000 )//如果最高位不为0,则说明字符已经7个,如果不处理,再加第八个字符时,第一个字符会被移出 ...
//ELFhash函数inthasher(char*k){unsignedlongh=0,g;while(*k){h=(h<<4)+*k++;g=h&0xf0000000l;//7个0;if(g)h^=g>>24;h&=~g;}returnh;}附测试..
一个通用的散列函数 HashPJW要比ElfHash要好一点,但也要看具体情况, /× HashPJW8*/ #include <limits.h> #define BITS_IN_int (sizeof (int) * CHAR_BIT) #define THREE_QUARTERS ((int) ((BITS_IN_int * 3) / 4)) #define ONE_EIGHTH ((int) (BITS_IN_int / 8 )) ...
修改Android lib***.so(ELF)文件的函数名和hash 文件说明 modify.c 修改so文件(ELF文件)方法对应的hash readsymbol.c 取并打印so文件内的symbol libtest/modify modify.c编译后的文件(编译环境OS X,需要在其他环境执行的可以用源码重新编译) libtest/readsymbol readsymbol.c编译后的文件(编译环境OS X,需要在...
h &= ~g;//清空28到31位。g的28位到31位于h的28位到31位完全相同,且g的其他位完全为0,所以g取反之后,与h相与,之后, //h的28到31位清空,但是其他位都保留了下来。 } return h; } 网页标题:字符串哈希函数ELFHash的理解 URL地址:http://www.azwzsj.com/article/ihdjsj.html...
intELFhash(char*key){unsignedlongh=0;unsignedlongx=0;while(*key){//h左移4位,当前字符ASCII存入h的低四位h=(h<<4)+(*key++);if((x=h&0xF0000000L)!=0){//如果最高位不为0,则说明字符多余7个,如果不处理,再加第九个字符时,第一个字符会被移出,因此要有如下处理h^=(x>>24);//清空28...