2012-11-27 196 views

回答

47

hash软件包对此很有帮助。请注意,它是对特定哈希实现的抽象。在包subdirectories中发现了一些现成的。

实施例:

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.")) 
} 

(也here


输出:

926844193 
107706013 
+0

另外,可以使用单个实例和'Write' /'Reset',而不是每次创建'New32a'。我不知道它有多少成本。例如:https://play.golang.org/p/aUeNBo755g –

1

这里是你可以使用以生成散列数的函数:

// 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

你会发现FNV32FNV32aFNV64FNV65aMD5SHA1SHA256SHA512

相关问题