打印

求如何把pcm16转换位pcm8的代码

[复制链接]
1316|3
手机看帖
扫描二维码
随时随地手机跟帖
沙发
tianxj01| | 2019-7-3 18:35 | 只看该作者
在C里面,16位转8位非常简单,你直接将16位数据赋值给8位变量,则只留下最后面的8位,高8位直接扔掉。
也许你想要原来16位数据的高8位,则先将该16位数据>>8位,然后直接赋值给8位变量,你就获得高8位数据。
根据你提问的,PCM,应该是音频编码,则我们需要的是高8位,低8位是高分辨率的部分,转换后我们是不需要的。低位直接扔掉,也就是
B(8bit)=A(16bit)>>8;
就可以了。

使用特权

评论回复
板凳
tianxj01| | 2019-7-3 18:42 | 只看该作者
如果你熟悉C,那么,方法还有许多,而且速度会更快。
1、采用结构体,将8位的目标寄存器,和16位的被转换寄存器,组成一个16位结构体,让8位的目标寄存器对准数据的高8位(这个你自己根据结构体去学习一下就会明白)。然后将数据送被转换寄存器,则目标寄存器直接就是高8位数据,这个不需要右移8次,速度比右移快多了。
2、采用指针,将8位数据目标和16位数据的高位叠起来用指针读,出来就直接是高8位数据,这个方法也很快。

使用特权

评论回复
地板
dirtwillfly| | 2019-7-3 22:08 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

301

主题

475

帖子

0

粉丝