保存在 16 位的双变量样本中



我有一个包含音频数据的.pcm文件。具体而言,17816 字节对应于 8908 个样本(44100 Hz 和 16 位)。我想将这些示例读取为双精度数据,但问题是双精度是 8 个字节。

我该怎么办?当我使用 wavread 函数在 Matlab 中执行此操作时,Matlab 会创建一个包含 8908 个样本的双精度变量,所以我想在 c++ 中做同样的事情。

我不确定 MATLAB 到底做了什么,但大概它的双精度值介于 0(或 -1)和 1 之间。

在这种情况下,您必须添加一个比例因子(分母):

int16_t filevalue;
double dvalue = filevalue / 32768.;

uint16_t filevalue;
double dvalue = filevalue / 65536.;

读取 16 位(可能作为unsigned shortuint16_t)。然后将该值强制转换为 double

最新更新