为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕姐4208626 2021-09-27 15:46:08
我有这个代码:hashChannel <- []byte(md5.Sum(buffer.Bytes()))我得到这个错误:cannot convert md5.Sum(buffer.Bytes()) (type [16]byte) to type []byte即使没有显式转换,这也不起作用。我也可以保留类型 [16] 字节,但在某些时候我需要转换它,因为我通过 TCP 连接发送它:_, _ = conn.Write(h)转换它的最佳方法是什么?谢谢
查看完整描述

2 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

切片数组。例如,


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]


查看完整回答
反对 回复 2021-09-27
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

使用数组创建切片,您只需创建一个simple slice expression:


foo := [5]byte{0, 1, 2, 3, 4}

var bar []byte = foo[:]

或者在你的情况下:


b := md5.Sum(buffer.Bytes())

hashChannel <- b[:]


查看完整回答
反对 回复 2021-09-27
  • 2 回答
  • 0 关注
  • 793 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信