Golang 将类型 [N]byte 转换为 []byte

我有这个代码:

hashChannel <- []byte(md5.Sum(buffer.Bytes()))

我得到这个错误:

cannot convert md5.Sum(buffer.Bytes()) (type [16]byte) to type []byte

即使没有显式转换,这也不起作用。我也可以保留类型 [16] 字节,但在某些时候我需要转换它,因为我通过 TCP 连接发送它:

_, _ = conn.Write(h)

转换它的最佳方法是什么?谢谢


慕姐4208626
浏览 794回答 2
2回答

繁华开满天机

切片数组。例如,package mainimport (&nbsp; &nbsp; "bytes"&nbsp; &nbsp; "crypto/md5"&nbsp; &nbsp; "fmt")func main() {&nbsp; &nbsp; var hashChannel = make(chan []byte, 1)&nbsp; &nbsp; var buffer bytes.Buffer&nbsp; &nbsp; sum := md5.Sum(buffer.Bytes())&nbsp; &nbsp; hashChannel <- sum[:]&nbsp; &nbsp; fmt.Println(<-hashChannel)}输出:[212 29 140 217 143 0 178 4 233 128 9 152 236 248 66 126]

繁星淼淼

使用数组创建切片,您只需创建一个simple slice expression:foo := [5]byte{0, 1, 2, 3, 4}var bar []byte = foo[:]或者在你的情况下:b := md5.Sum(buffer.Bytes())hashChannel <- b[:]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go