1. 程式人生 > >ELF-哈希字符串算法

ELF-哈希字符串算法

hash 多余 != unsigned 字符 turn 如果 ascii 清空

int ELFhash(char *key){

    unsigned long h=0;
    unsigned long x=0;

    while(*key)
    {
        h=(h<<4)+(*key++);  //h左移4位,當前字符ASCII存入h的低四位
                if( (x=h & 0xF0000000L)!=0)
        { //如果最高位不為0,則說明字符多余7個,如果不處理,再加第九個字符時,第一個字符會被移出
          //因此要有如下處理
          h^=(x>>24);
          //清空28~31位
          h&=~x;
        }
    }
    return h % N;
}

  

ELF-哈希字符串算法