在 Golang 中将 MD5 转换为十进制的最佳方法?

Jam*_*mes 3 go

在Python中我可以做

int(hashlib.md5('hello world').hexdigest(), 16)
Run Code Online (Sandbox Code Playgroud)

这导致

125893641179230474042701625388361764291L
Run Code Online (Sandbox Code Playgroud)

Golang 中获取 MD5 字符串并获取十进制表示的等效项是什么?

Jer*_*ley 5

您可以使用math/big来完成此操作。

package main

import (
    "crypto/md5"
    "encoding/hex"
    "fmt"
    "math/big"
)

func main() {
    bi := big.NewInt(0)
    h := md5.New()
    h.Write([]byte("hello world"))
    hexstr := hex.EncodeToString(h.Sum(nil))
    bi.SetString(hexstr, 16)
    fmt.Println(bi.String())
}
Run Code Online (Sandbox Code Playgroud)

http://play.golang.org/p/3h521Ao1UY

  • 小优化,您实际上不需要将其编码为十六进制,您可以直接使用`bi.SetBytes`:http://play.golang.org/p/hHSnNPWUP8 (5认同)
  • @OneOfOne如果您以“[]byte”值开头,这是正确的,问题引用了MD5字符串,因此OP可能以十六进制开头。 (2认同)