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

Golang:将缓冲输入读取为带符号的 16 位整数

Golang:将缓冲输入读取为带符号的 16 位整数

Go
茅侃侃 2021-09-20 20:32:14
我正在尝试读取带符号的 16 位整数(wav 格式)的缓冲流,但 bufio.Read 方法只接受一个字节数组。我的问题是一个两部分:我可以将字节流预先格式化为缓冲的 int16 数组吗?如果我不能,将字节数组后处理为 int16 数组的最佳方法是什么?我最初的想法是使用 tmp 数组并继续推送/处理它们,但我很好奇是否有更惯用的方法来做到这一点?package mainimport (     "bufio"     "io"     "log"     "os/exec")func main() {    app := "someapp"    cmd := exec.Command(app)    stdout, err := cmd.StdoutPipe()    r := bufio.NewReader(stdout)    if err != nil {        log.Fatal(err)    }    if err := cmd.Start(); err != nil {        log.Fatal(err)    }    //"someapp" outputs signed 16bit integers (little endian))    buf := make([]byte, 0, 4*1024)    for {        n, err := r.Read(buf[:cap(buf)])    //r.Read only accepts type []byte        buf = buf[:n]        if n == 0 {            if err == nil {                continue            }            if err == io.EOF {                break            }            log.Fatal(err)        }        log.Printf("%x\n", buf)        //process buf here        if err != nil && err != io.EOF {            log.Fatal(err)        }    }}
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 211 浏览
慕课专栏
更多

添加回答

举报

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