我正试图在Go中获取文件的md5哈希值,如下所示:
running_hash := md5.New(); // type hash.Hash
running_hash.Write(data); // data is []byte
sum := running_hash.Sum(); // []uint8 according to the compiler
但是当我尝试通过
获取哈希值'sum'(http://golang.org/pkg/hash/)的字符串时sumstring := string(sum); // returns 'Ӿ��]앿��N��' or similar
当哈希应该是d3be9e835dec95bfbef34ebe1fbf03da
时。当我尝试逐字节转换时,我得到了同样的废话,只有不同的字符。
我的意思是如何获取哈希的字符串?
答案 0 :(得分:13)
基本上,你有二进制数据,但看起来你正在期待十六进制。查看转换例程的hex包,尤其是EncodeToString
。我不是Go程序员,但我想如果你只是将sum
传递给hex.EncodeToString
,你就会得到你期望的答案。
答案 1 :(得分:5)
或者,您可以使用fmt.Sprintf("%x", sum)