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;
}
只是浏览他们的代码。不过,我以前从未见过这样的哈希函数。
我对按位运算不是很熟悉,我知道移位和屏蔽是如何工作的,但只是在基本场景中,比如检查位是否已设置。
这到底是做什么的?
最佳答案
阅读here以获得总体概述,并向下搜索“一次一次哈希”(由 Jenkins 撰写),这与此相吻合。
另见 Wikipedia entry , 在 this answer 中提到.
“这究竟是怎样的一个好散列?”不完全是。这些转变有点武断,主要来自一些启发式和经验测试。
关于c++ - CryEngine 的哈希函数是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16701855/