我有两个不同的程序,希望分别使用Python和Java中的hurry3散列同一个字符串。在
Python 2.7.9版:
mmh3.hash128('abc')
提供79267961763742113019008347020647561319L
Java是Guava 18.0:
^{pr2}$
给出字符串“6778AD3F3F3F96B4522DCA2644174A23B”,转换为BigInterger得到137537073056680613988840834069010096699。在
如何从两者中得到相同的结果?在
谢谢
Tags:
以下是如何从两者中获得相同的结果:
哈希代码的字节需要被视为little-endian,但是}的输出实际上是一系列十六进制数字对,表示哈希字节,其顺序与{}(little endian)返回的顺序相同。(您还可以反转这些十六进制对,以获得一个十六进制数,当传递给
BigInteger
将字节解释为big-endian。您大概是在使用new BigInteger(hex, 16)
来创建BigInteger
,但{new BigInteger(reversedHex, 16)
时,该十六进制数确实会产生相同的结果)。在我认为
toString()
的文档有点混乱,因为它引用了“big-endian”;它实际上并不意味着方法的输出是十六进制数,表示被解释为big-endian的字节。在我们有一个开放的issue,用于将
asBigInteger()
添加到HashCode
。在如果有人对相反的答案感兴趣,请将python输出转换为Java输出:
相关问题 更多 >
编程相关推荐