如何从[]字节转换为[16]字节?

时间:2015-01-02 19:35:51

标签: go

我有这段代码:

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个新字节并复制数据不感兴趣。

1 个答案:

答案 0 :(得分:7)

没有直接的方法将切片转换为数组。但是你可以复制一份。

var ret [16]byte
copy(ret[:], b)

标准库使用[]字节,如果你坚持使用别的东西,你只需要做更多的打字。我为md5值编写了一个使用数组的程序,后悔了。