编程语言
首页 > 编程语言> > Javascript哈希算法

Javascript哈希算法

作者:互联网

我正在尝试学习如何在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&哈希值.谢谢您的回复. 注意:对于任何寻找源代码的人来说,它是Java的String.hashCode()的实现:
 http://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method

解决方法:

这一步

  hash = ((hash << 5) - hash) + char;

有效地:

  hash = ((hash * 32) - hash) + char;

然后,

  hash = hash & hash;

只有在数字溢出整数范围(32位或31位)时才会更改该值. (我不这样做,但这是风格问题.)

在该代码中,应声明变量“i”和“char”:

var hash = 0, i, char;

标签:javascript,algorithm,string-hashing
来源: https://codeday.me/bug/20190728/1565763.html