英文:
How to generate hash number of a string in Go?
问题
例如:
hash("HelloWorld") = 1234567
是否有任何内置函数可以做到这一点?
谢谢。
英文:
For example:
hash("HelloWorld") = 1234567
Is there any built-in function could do this ?
Thanks.
答案1
得分: 132
hash 包对此很有帮助。请注意,它是对特定哈希实现的抽象。一些现成的实现可以在 子目录 中找到。
示例:
package main
import (
"fmt"
"hash/fnv"
)
func hash(s string) uint32 {
h := fnv.New32a()
h.Write([]byte(s))
return h.Sum32()
}
func main() {
fmt.Println(hash("HelloWorld"))
fmt.Println(hash("HelloWorld."))
}
(也可以在 这里 查看)
输出:
926844193
107706013
英文:
The hash package is helpful for this. Note it's an abstraction over specific hash implementations. Some ready made are found in the package subdirectories.
Example:
package main
import (
"fmt"
"hash/fnv"
)
func hash(s string) uint32 {
h := fnv.New32a()
h.Write([]byte(s))
return h.Sum32()
}
func main() {
fmt.Println(hash("HelloWorld"))
fmt.Println(hash("HelloWorld."))
}
(Also here)
Output:
926844193
107706013
答案2
得分: 9
这里是一个你可以用来生成哈希数的函数:
// 使用fnv32a算法进行FNV32a哈希
func FNV32a(text string) uint32 {
algorithm := fnv.New32a()
algorithm.Write([]byte(text))
return algorithm.Sum32()
}
我在这里组合了一组实用的哈希函数:https://github.com/shomali11/util
你会找到FNV32
、FNV32a
、FNV64
、FNV64a
、MD5
、SHA1
、SHA256
和SHA512
。
英文:
Here is a function you could use to generate a hash number:
// FNV32a hashes using fnv32a algorithm
func FNV32a(text string) uint32 {
algorithm := fnv.New32a()
algorithm.Write([]byte(text))
return algorithm.Sum32()
}
I put together a group of those utility hash functions here: https://github.com/shomali11/util
You will find FNV32
, FNV32a
, FNV64
, FNV64a
, MD5
, SHA1
, SHA256
and SHA512
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论