转换VS 2010和2015之间的差异

Lee*_*dmi 1 c++ type-conversion visual-studio-2010 visual-studio-2015

嗨,我有这个用VS2010编写的代码:

unsigned long CHwFingerprint::toHash(wstring& wmisignature)
{
    if (wmisignature.empty())
        wmisignature = _empty;

    hash<wstring> str_hash;
    unsigned long hash = (unsigned long)str_hash(wmisignature);
    return hash;
}
Run Code Online (Sandbox Code Playgroud)

*wstring只是我们创建的一个Unicode字符串,可以用作CString ...

现在,当我在VS 2015中使用此代码时,我得到了不同的结果.例如,如果wmisignature=HMT351U6CFR8C-PB 那么结果将如下:

  • VS 2010:hash = 229184272
  • VS 2015:hash = 4005003184

有什么想法吗?

Jar*_*d42 5

实际的散列函数是依赖于实现的,因此可能与编译器不同......

从C++ 14开始:

哈希函数只需要在一次执行程序时为同一输入产生相同的结果; 这允许盐渍哈希防止冲突拒绝服务攻击.