如何解释 32 位浮点 wav 数据?我将 wav 数据读取为 I32,然后将其除以 2^31,但没有得到正确的结果。
最佳答案
这些值是 float 。您必须将它们分配给浮点值并按原样使用它们。如果您将 float 值读入 int32 值,则您所做的操作相当于reinterpret_cast。
float f1 = 1.0e5;
int i1 = *reinterpret_cast<int*>( &f1 );
// i1 = 1203982336, not 100000
如果你无法避免得到错误的值,那么为了得到“正确”的值,你需要逆向重新解释
float f2 = *reinterpret_cast<float*>( &i1 );
// f2 = 1.0e5
数据的字节顺序可能仍需要调整。
关于c++ - 如何解释 32 位浮点 wav 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14885436/