问题内容
在服务 a 中,我有一个像这样进行哈希处理的字符串:
fun string.tohash(): long {
var hashcode = this.hashcode().tolong()
if (hashcode < 0l) {
hashcode *= -1
}
return hashcode
}
我想在用 golang 编写的服务 b 中复制这段代码,因此对于同一个单词,我得到完全相同的哈希值。据我从 kotlin 文档中了解到,应用的哈希返回一个 64 位整数。所以在 go 中我这样做:
func hash(s string) int64 {
h := fnv.new64()
h.write([]byte(s))
v := h.sum64()
return int64(v)
}
但是在进行单元测试时我没有得到相同的值。我得到:
func test_hash(t *testing.t) {
tests := []struct {
input string
output int64
}{
{input: "papafritas", output: 1079370635},
}
for _, test := range tests {
got := hash(test.input)
assert.equal(t, test.output, got)
}
}
结果:
7841672725449611742
我做错了什么吗?
正确答案
Java 以及 Kotlin 使用与 Go 不同的哈希函数。
可能的选项是:
- 使用标准哈希函数。
- 在 Go 中重新实现字符串的 Java hashCode。
以上就是Kotlin 和 Golang 中的字符串散列的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容猜你喜欢
AI推送时光机Kotlin 和 Golang 中的字符串散列
后端开发2024-02-06
PHP计算字符串的 MD5 散列值
后端开发2024-04-02
Java如何计算字符串的 SHA-1 散列
后端开发2024-04-02
PHP如何计算字符串的 SHA-1 散列
后端开发2024-04-02
Python如何计算字符串的 SHA-1 散列
后端开发2024-04-02
替换golang中字符串中的字符
后端开发2024-02-09
C语言如何计算字符串的 SHA-1 散列
后端开发2024-04-02
Redis数据操作--字符串与散列键的区别
后端开发2024-04-02
Go语言如何计算字符串的 SHA-1 散列
后端开发2024-04-02
也许是 golang 中的 bag(类型字符串和字符串不匹配)
后端开发2024-02-09
Python中字符串和列表怎么去重
后端开发2023-07-05
详解Golang中字符串的使用
后端开发2024-04-02
怎么使用Golang去除字符串中的n字符
后端开发2023-07-05
如何在Golang中遍历字符串的每个字符?
后端开发2024-03-13
深度剖析Golang中的数组,字符串和切片
后端开发2023-05-17
理解Golang中字符串结尾字符的判断逻辑
后端开发2024-03-12
咦!没有更多了?去看看其它编程学习网 内容吧