57

例如:

hash("HelloWorld") = 1234567

有没有内置函数可以做到这一点?

谢谢。

4

2 回答 2

108

哈希包对此很有帮助。请注意,它是对特定哈希实现的抽象。在包子目录中可以找到一些现成的。

例子:

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
于 2012-11-27T11:09:37.460 回答
5

这是一个可用于生成哈希数的函数:

// FNV32a hashes using fnv32a algorithm
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,SHA256SHA512

于 2017-11-12T00:37:53.900 回答