著名的字符串hash函数--elfhash:
Pascal代码:
function ELFhash(x:string):longint;
var
i,h,g:longint;
begin
h:=0;
for i:=1 to length(x) do
begin
h:=(h shl 4)+ord(x[i]);
g:=h and $f0000000;
if g<>0 then h:=h xor (g shr 24);
h:=h and (not g);
end;
exit(h mod Max);
end;
C代码:
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;
}