在64位.NET 4.5平台上,无论如何都要计算32位.NET 4.5平台上字符串的GetHashCode()方法的结果?
答案 0 :(得分:2)
GetHashCode()
不是32位也不是64位特定的,所以在32位系统上调用它与在64位系统上调用它是一样的。
您似乎正在尝试将哈希码重用于某种序列化目的。你无法可靠地做到这一点。如果它更容易,请将字符串的GetHashCode()
函数视为以下内容。
static Dictionary <string, int> HashCodes = new Dictionary<string, int>();
static Random Rand = new Random();
static int PsudoGetHashCode(string stringInQuestion)
{
lock(HashCodes)
{
int result;
if(!HashCodes.TryGetValue(stringInQuestion, out result)
{
result = Rand.Next();
HashCodes[stringInQuestion] = result;
}
return result;
}
}
每个程序运行只保证获得相同字符串的GetHashCode()
值,如果关闭程序并重新打开它,很可能会得到一个新值。
唯一能为您提供可靠结果的解决方案是修复数据库的设计,使其不存储.NET内置的GetHashCode()