我在用boost::hash
获取字符串的哈希值。
但它在 Windows 32 位和 Debian 64 位系统上为同一字符串提供不同的哈希值。
那么我怎样才能使用相同的哈希值(32位或64位)boost::hash
与平台无关?
与什么有关的保证boost::hash
?我没有看到任何
保证生成的哈希码可以在外部使用
生成它的过程。 (这种情况经常出现在
哈希函数。)如果您需要外部数据的哈希值,
在不同的程序和不同的平台上有效(例如
对磁盘上数据的哈希访问),那么你必须编写你的
自己的。就像是:
uint32_t
hash( std::string const& key )
{
uint32_t results = 12345;
for ( auto current = key.begin(); current != key.end(); ++ current ) {
results = 127 * results + static_cast<unsigned char>( *current );
}
return results;
}
应该可以解决问题,只要你不用担心
移植到一些奇异的大型机(可能不支持uint32_t
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)