【发布时间】:2010-09-25 20:14:44
【问题描述】:
我想知道如何手动计算给定字符串的哈希码。我知道在 Java 中,您可以执行以下操作:
String me = "What you say what you say what?";
long whatever = me.hashCode();
这一切都很好而且花花公子,但我想知道如何手工完成。我知道计算字符串哈希码的给定公式类似于:
S0 X 31 ^ (n-1) + S1 X 31 ^ (n-2) + .... + S(n-2) X 31 + S(n-1)
其中S表示字符串中的字符,n表示字符串的长度。然后使用 16 位 unicode,字符串 me 中的第一个字符将被计算为:
87 X (31 ^ 34)
但是,这会产生一个非常大的数字。我无法想象像这样将所有角色加在一起。那么,为了计算最低位的 32 位结果,我该怎么办?上面的long等于-957986661,我不知道如何计算?
【问题讨论】: