使用 C++、Windows 7、英特尔 CPU。
我想要做的是将浮点值 [-1, 1] 映射到 16 位有符号值并将它们写入文件。最明显的做法似乎是将浮点值乘以 32768 (2^16 / 2),然后简单地写入它们。当我这样做时会发生以下情况:
std::ofstream outfile(filename.c_str());
float hypotheticalFloat = 0.25;
int16_t scaledVal = hypotheticalFloat*32768;
outfile << scaledVal;
然后八进制转储命令告诉我我有
$ od -cd output.pcm
0000000 8 1 9 2
12600 12857
在我看来,它将每个 int16_t 值的数字写成自己的字节。我会感谢任何知道这里发生了什么的人。我不知所措。