我有这段代码:
func my_function(hash string) [16]byte {
b, _ := hex.DecodeString(hash)
return b // Compile error: fails since [16]byte != []byte
}
b
的类型为[]byte
。我知道hash
长度为32.如何使我的代码在上面工作? IE浏览器。我能以某种方式从通用长度字节数组转换为固定长度的字节数组吗?我对分配16个新字节并复制数据不感兴趣。
答案 0 :(得分:7)
没有直接的方法将切片转换为数组。但是你可以复制一份。
var ret [16]byte
copy(ret[:], b)
标准库使用[]字节,如果你坚持使用别的东西,你只需要做更多的打字。我为md5值编写了一个使用数组的程序,后悔了。