web-dev-qa-db-ja.com

Goで文字列のハッシュ番号を生成する方法は?

例えば:

hash("HelloWorld") = 1234567

これを行うことができる組み込み関数はありますか?

ありがとう。

31
MrROY

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
67
zzzz

ハッシュ番号を生成するために使用できる関数は次のとおりです。

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

見つけるだろう FNV32FNV32aFNV64FNV65aMD5SHA1SHA256およびSHA512

2
Raed Shomali