Преобразование различий между VS 2010 и 2015 - PullRequest
0 голосов
/ 01 января 2019

Привет, у меня есть этот код, который был написан в 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;
}

* wstring - это просто строка Unicode, которую мы создали, и ее можно использовать как CString ...

Теперь яполучить другие результаты, когда я использую этот код в VS 2015. Например, если wmisignature=HMT351U6CFR8C-PB, тогда результаты будут следующими:

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

Есть идеи почему?

Ответы [ 2 ]

0 голосов
/ 01 января 2019

Щелкните правой кнопкой мыши проект и выберите свойства.В конфигурации-> Общие-> Набор инструментов платформы измените на v100.

0 голосов
/ 01 января 2019

Фактические хеш-функции зависят от реализации, поэтому могут отличаться от компиляторов ...

, а поскольку C ++ 14:

Хеш-функции требуются только для получения того же результата дляодин и тот же ввод в рамках одного выполнения программы;это позволяет использовать соленые хэши, которые предотвращают атаки типа «отказ в обслуживании».

...