紗購廣

# 昼寄偽 鴬人

## 晩崗

### 忖憲堪Hash痕方

2007-10-05 16:55:06|  蛍窃⦿ C/C++ |  炎禰⦿ |訟烏 |忖催

和墮LOFTER 厘議孚頭慕  |

//  RS Hash Function

unsigned  int  RSHash( char   * str)
{
unsigned  int  b  =   378551 ;
unsigned  int  a  =   63689 ;
unsigned  int  hash  =   0 ;
while  ( * str)
{
hash  =  hash  *  a  +  ( * str ++ );
a  *=  b;
}
return  (hash  &   0x7FFFFFFF );
}

//  JS Hash Function
unsigned  int  JSHash( char   * str)

{

unsigned  int  hash  =   1315423911 ;

while  ( * str)

{

hash  ^=  ((hash  <<   5 )  +  ( * str ++ )  +  (hash  >>   2 ));

}

return  (hash  &   0x7FFFFFFF );

}

//  P. J. Weinberger Hash Function

unsigned  int  PJWHash( char   * str)

{

unsigned  int  BitsInUnignedInt  =  (unsigned  int )( sizeof (unsigned  int )  8 );

unsigned  int  ThreeQuarters     =  (unsigned  int )((BitsInUnignedInt   *   34 );

unsigned  int  OneEighth         =  (unsigned  int )(BitsInUnignedInt  /   8 );

unsigned  int  HighBits          =  (unsigned  int )( 0xFFFFFFFF )  <<  (BitsInUnignedInt  -  OneEighth);

unsigned  int  hash              =   0 ;

unsigned  int  test              =   0 ;

while  ( * str)

{

hash  =  (hash  <<  OneEighth)  +  ( * str ++ );

if  ((test  =  hash  &  HighBits)  !=   0 )

{

hash  =  ((hash  ^  (test  >>  ThreeQuarters))  &  ( ~ HighBits));

}

}

return  (hash  &   0x7FFFFFFF );

}

//  ELF Hash Function

unsigned  int  ELFHash( char   * str)

{

unsigned  int  hash  =   0 ;

unsigned  int  x     =   0 ;

while  ( * str)

{

hash  =  (hash  <<   4 )  +  ( * str ++ );

if  ((x  =  hash  &   0xF0000000L )  !=   0 )

{

hash  ^=  (x  >>   24 );

hash  &=   ~ x;

}

}

return  (hash  &   0x7FFFFFFF );

}

//  BKDR Hash Function

unsigned  int  BKDRHash( char   * str)

{

unsigned  int  seed  =   131 ;  //  31 131 1313 13131 131313 etc..

unsigned  int  hash  =   0 ;

while  ( * str)

{

hash  =  hash  *  seed  +  ( * str ++ );

}

return  (hash  &   0x7FFFFFFF );

}

//  SDBM Hash Function

unsigned  int  SDBMHash( char   * str)

{

unsigned  int  hash  =   0 ;

while  ( * str)

{

hash  =  ( * str ++ )  +  (hash  <<   6 )  +  (hash  <<   16 )  -  hash;

}

return  (hash  &   0x7FFFFFFF );

}

//  DJB Hash Function

unsigned  int  DJBHash( char   * str)

{

unsigned  int  hash  =   5381 ;

while  ( * str)

{

hash  +=  (hash  <<   5 )  +  ( * str ++ );

}

return  (hash  &   0x7FFFFFFF );

}

//  AP Hash Function

unsigned  int  APHash( char   * str)

{

unsigned  int  hash  =   0 ;

int  i;

for  (i = 0 ;  * str; i ++ )

{

if  ((i  &   1 )  ==   0 )

{

hash  ^=  ((hash  <<   7 )  ^  ( * str ++ )  ^  (hash  >>   3 ));

}

else

{

hash  ^=  ( ~ ((hash  <<   11 )  ^  ( * str ++ )  ^  (hash  >>   5 )));

}

}

return  (hash  &   0x7FFFFFFF );

}

2010-5-8

CRC 麻隈

2011-12-26

2012-8-24
得胎宸嫖

#### 得胎

<#--恷仟晩崗⇧蛤鴬晩崗--> <#--容呪晩崗--> <#--哈喘芝村--> <#--鴬麼容呪--> <#--昧字堋響--> <#--遍匈容呪--> <#--煽雰貧議書爺--> <#--瓜容呪晩崗--> <#--貧匯鐙⇧和匯鐙--> <#-- 犯業 --> <#-- 利叟仟療鴻御 --> <#--嘔円庁翠潤更--> <#--得胎庁翠潤更--> <#--哈喘庁翠潤更--> <#--鴬麼窟軟議誘同-->