を逆にするには、次のように機能します。今 どのように我々は.NETで<code>GetHashCode</code>を学ぶために使用さGetHashCodeメソッド
public int GetStringHashCode(string value)
{
int hash1 = (5381 << 16) + 5381;
int hash2 = hash1;
int len = value.Length;
int intval;
int c0, c1;
int i = 0;
while (len > 0)
{
c0 = (int)value[i];
c1 = (int)value[i + 1];
intval = c0 | (c1 << 16);
hash1 = ((hash1 << 5) + hash1 + (hash1 >> 27))^intval;
if (len <= 2)
{
break;
}
i += 2;
c0 = (int)value[i];
c1 = len > 3 ? (int)value[i + 1] : 0;
intval = c0 | (c1 << 16);
hash2 = ((hash2 << 5) + hash2 + (hash2 >> 27))^intval;
len -= 4;
i += 2;
}
return hash1 + (hash2 * 1566083941);
}
、どのように私はこの方法を逆にすることができます
? (int値を取得して文字列値(元の文字列)を返す方法)
実際のintは4バイトですが、stringは任意の長さを持つことができますが、既に文字列をintから復元することはできません。 – Evk