我想比较sha256.Sum256()的输出,它是[32]字节和[]字节。
我收到错误“不匹配的类型[32]字节和[]字节”。我无法将[]字节转换为[32]字节。
有办法做到这一点吗?
答案 0 :(得分:22)
你可以通过切片将任何数组([size] T)平滑地转换为切片([] T):
x := [32]byte{}
slice := x[:] // shorthand for x[0:len(x)]
从那里你可以将它与你的切片进行比较,就像比较任何其他两个切片一样,例如
func Equal(slice1, slice2 []byte) bool {
if len(slice1) != len(slice2) {
return false
}
for i := range slice1 {
if slice1[i] != slice2[i] {
return false
}
}
return true
}
修改:正如Dave在评论中提到的那样,Equal
包中还有一个bytes
方法,bytes.Equal(x[:], y[:])
答案 1 :(得分:-3)
我使用这个帖子得到了答案
SHA256 in Go and PHP giving different results
converted := []byte(raw)
hasher := sha256.New()
hasher.Write(converted)
return hex.EncodeToString(hasher.Sum(nil)) == encoded
这不是将[32]字节转换为[]字节,而是使用不同的函数,它们不以[32]字节给出输出。