这是一种方法。这是跨平台的,从某种意义上说,无论平台是什么,给定的字符串都将产生相同的哈希值。当然,可以通过消除对QDataStream的依赖性并根据需要使用字节翻转功能来调整字节序来进一步优化。
qint64 hash(const QString & str)
{
QByteArray hash = QCryptographicHash::hash(
QByteArray::fromRawData((const char*)str.utf16(), str.length()*2),
QCryptographicHash::Md5
);
Q_ASSERT(hash.size() == 16);
QDataStream stream(&hash);
qint64 a, b;
stream >> a >> b;
return a ^ b;
}
Run Code Online (Sandbox Code Playgroud)