int16切片如何优雅转成byte切片?
1. 场景
pcm流式数据转opus文件。使用到了 github.com/hraban/opus 第三方库。其中 Encode
需要pcm为[]int16
格式。
2. 问题描述?
[]int16
如何优雅转成[]byte
?
现在[]byte
可以转成[]int16
下面是示例代码
3. 代码
func main() {
// int16转byte
nums := [6]int16{2, 3, 5, 7, 11, 13}
buf := new(bytes.Buffer)
err := binary.Write(buf, binary.LittleEndian, nums)
if err != nil {
fmt.Printf("Write%v", err)
}
// byte转int16 (有问题 无法实现效果)
bs := make([]int16, 0)
err = binary.Read(bytes.NewReader(buf.Bytes()), binary.LittleEndian, bs)
if err == nil {
fmt.Printf("%x", bs) // 现在输出 []
} else {
fmt.Printf("Read%x", err)
}
}
请赐教
4. 您实际得到的结果?
[2 3 5 7 11 13]
5. 其他问题
有没有使用过这个库的啊,求推荐其他opus转换的第三方库
你的bs在创建的时候,指明的size是0, 空数组,必然无法写入数据啊。