Golang 将类型 [N]byte 转换为 []byte
Golang convert type [N]byte to []byte
我有这个代码:
hashChannel <- []byte(md5.Sum(buffer.Bytes()))
我得到这个错误:
cannot convert md5.Sum(buffer.Bytes()) (type [16]byte) to type []byte
即使没有显式转换,这也不起作用。我也可以保留类型 [16]byte,但在某些时候我需要转换它,因为我通过 TCP 连接发送它:
_, _ = conn.Write(h)
最好的转换方法是什么?
谢谢
使用数组创建一个切片你可以只做一个 simple slice expression
:
foo := [5]byte{0, 1, 2, 3, 4}
var bar []byte = foo[:]
或者您的情况:
b := md5.Sum(buffer.Bytes())
hashChannel <- b[:]
切片数组。例如,
package main
import (
"bytes"
"crypto/md5"
"fmt"
)
func main() {
var hashChannel = make(chan []byte, 1)
var buffer bytes.Buffer
sum := md5.Sum(buffer.Bytes())
hashChannel <- sum[:]
fmt.Println(<-hashChannel)
}
输出:
[212 29 140 217 143 0 178 4 233 128 9 152 236 248 66 126]
我有这个代码:
hashChannel <- []byte(md5.Sum(buffer.Bytes()))
我得到这个错误:
cannot convert md5.Sum(buffer.Bytes()) (type [16]byte) to type []byte
即使没有显式转换,这也不起作用。我也可以保留类型 [16]byte,但在某些时候我需要转换它,因为我通过 TCP 连接发送它:
_, _ = conn.Write(h)
最好的转换方法是什么? 谢谢
使用数组创建一个切片你可以只做一个 simple slice expression
:
foo := [5]byte{0, 1, 2, 3, 4}
var bar []byte = foo[:]
或者您的情况:
b := md5.Sum(buffer.Bytes())
hashChannel <- b[:]
切片数组。例如,
package main
import (
"bytes"
"crypto/md5"
"fmt"
)
func main() {
var hashChannel = make(chan []byte, 1)
var buffer bytes.Buffer
sum := md5.Sum(buffer.Bytes())
hashChannel <- sum[:]
fmt.Println(<-hashChannel)
}
输出:
[212 29 140 217 143 0 178 4 233 128 9 152 236 248 66 126]