Dub*_*Dot 2 c c++ hash cryengine
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;
}
Run Code Online (Sandbox Code Playgroud)
只是徘徊在他们的代码上.虽然我以前从未见过像这样的散列函数.
当谈到按位运算时,我并不太专业,我知道位移和屏蔽是如何工作的,但只是在检查位是否设置的基本情况下.
这到底是做什么的?
请阅读此处以获取一般概述,并查看"一次性哈希"(由Jenkins提供),这与此一致.
另请参阅此答案中提到的Wikipedia条目.
"这究竟是一个好哈希?" 不完全是.这些转变有点武断,主要来自一些启发式和实证检验.