我正在尝试学习如何在 Javascript 中进行一些基本的哈希处理,并且遇到了以下算法:
var hash = 0;
for (i = 0; i < this.length; i++) {
char = str.charCodeAt(i);
hash = ((hash<<5)-hash)+char;
hash = hash & hash;
}
我真的不明白它是如何工作的,我希望你能帮助我。特别是我不明白(hash<<5)-hash
和hash = hash & hash
。谢谢您的回复。
注意:对于寻找源代码的任何人,它都是 Java 的 String.hashCode() 的实现: http ://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method