本机库具有 FNV-1 哈希算法https://golang.org/pkg/hash/fnv/返回 uint64 值(范围:0 到 18446744073709551615)。我需要将此值存储在 PostgreSQL bigserial 中,但它的范围是 1 到 9223372036854775807。


可以将哈希大小更改为例如。56?http://www.isthe.com/chongo/tech/comp/fnv/index.html#xor-fold


有人可以帮助更改本机算法以生成 56 位哈希吗? https://golang.org/src/hash/fnv/fnv.go


更新


我自己使用这个文档http://www.isthe.com/chongo/tech/comp/fnv/index.html#xor-fold


package main


import (

    "fmt"

    "hash/fnv"

)


func main() {

    const MASK uint64 = 1<<63 - 1

    h := fnv.New64()

    h.Write([]byte("1133"))

    hash := h.Sum64()

    fmt.Printf("%#x\n", MASK)

    fmt.Println(hash)

    hash = (hash >> 63) ^ (hash & MASK)

    fmt.Println(hash)

}

http://play.golang.org/p/j7q3D73qqu


这是正确的吗?