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

[复制链接]
1555|3
 楼主| limee 发表于 2019-7-3 16:59 | 显示全部楼层 |阅读模式
就是16bit转成8位的。

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

粉丝
快速回复 在线客服 返回列表 返回顶部