c++ - CryEngine 的哈希函数是如何工作的?

标签 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;
}

只是浏览他们的代码。不过,我以前从未见过这样的哈希函数。

我对按位运算不是很熟悉,我知道移位和屏蔽是如何工作的,但只是在基本场景中,比如检查位是否已设置。

这到底是做什么的?

最佳答案

阅读here以获得总体概述,并向下搜索“一次一次哈希”(由 Jenkins 撰写),这与此相吻合。

另见 Wikipedia entry , 在 this answer 中提到.

“这究竟是怎样的一个好散列?”不完全是。这些转变有点武断,主要来自一些启发式和经验测试。

关于c++ - CryEngine 的哈希函数是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16701855/

相关文章:

c++ - 有什么方法可以将具有不同模板参数的模板类实例放入 vector 中?

c++ - 使用 c_str() 时 std::string 的未定义行为

c - 为什么输出是 36 而不是 24?

python - 为什么这个 'from-import' 因 PyRun_SimpleString 而失败?

authentication - 在 SSL 中使用密码哈希

database - 如果我为每个用户随机生成 SALT,我该如何对他们进行身份验证?

c++ - Mysql 查询字符串在查询 C++ 中不起作用

c++ - 如何在 Visual Studio C++ 中打印整个表格?

c - 这段代码如何在 C 中打印一系列数字?

symfony - 在symfony中没有用户实例的哈希用户密码