将JavaScript哈希函数复制到java / kotlin

我正在做一个多平台的应用程序,我已经完成了数据库和Web版本。 要检查网络版本上的代码,我从数据库中获得散列版本,并比较两者。 我使用这个JavaScript代码散列(我发现在另一个问题上 ):

hashCode = function(s){ return s.split("").reduce(function(a,b){a=((a<<5)-a)+b.charCodeAt(0);return a&a},0); } 

现在我需要在我的android应用程序中做同样的事情,但我不知道如何在java或kotlin中输出相同的函数。 有谁知道如何做到这一点,或有一个其他跨平台的香草解决方案?

提前致谢。

编辑:我很新的kotlin / java,所以我只知道我可以在网上找到什么,我知道什么其他语言。 我试图删除尽可能多的错误,但有些事情我只是不知道,它仍然给错误:

  fun go (a: Int, b: String): Int { var a = ((a shl 5) - a) + Character.codePointAt(b,0); return a and a } // this part doesn't give any errors now. fun hashCode(s: String): String { return s.split("").reduce(go(a,b)) // I don't know what to pass as parameters + reduce gives an error } 

如果你关心的是获取哈希码,而不是自己将javascript函数复制到kotlin中,那么我建议你可以使用这一行。

 val s:String = "aaaa"; println(s.hashCode()); 

输出是2986048

我检查与JavaScript版本,它是一样的。

这里是kotlin的hashCode的文档

开放的乐趣hashCode():Int(源)

返回该对象的哈希码值。 hashCode的一般合约是:

只要不止一次在同一个对象上被调用,hashCode方法必须始终返回相同的整数,前提是没有修改对象的等号比较中使用的信息。

如果根据equals()方法两个对象相等,那么对这两个对象的每一个调用hashCode方法必须产生相同的整数结果。

Interesting Posts