unsigned int HashString( const char *string ) {
const char* p;
unsigned hash = 40503;
for ( p = string; *p != '\0'; ++p ) {
hash += *p;
hash += ( hash << 10 );
hash ^= ( hash >> 6 );
}
hash += ( hash << 3 );
hash ^= ( hash >> 11 );
hash += ( hash << 15 );
return hash;
}
只是在他们的代码上徘徊。不过,我以前从未见过这样的散列函数。
在按位操作方面,我不是太老练,我知道位移和掩码是如何工作的,但仅在基本场景中,例如检查位是否已设置。
这究竟是做什么的?