c++ - 如何解释 32 位浮点 wav 数据

标签 c++ c floating-point wav

如何解释 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/

相关文章:

C++ ceil 和负零

c++ - 通过采用 void * 的 C 接口(interface)传递 shared_ptr

c++ - goto 和析构函数兼容吗?

c - 是否可以覆盖/绕过 nscd?

c - 如何初始化在 typdef union 中深埋 2 层的 int

c - 语言如何处理引擎盖下的打印 float ?

c++ - 如何从 boost::thread 取回值?

c++ - Visual Studio 11 中生成命令和属性的宏

c++ - SFML 字体。屏幕上不显示信息。显示的不是信息,而是一个点

c - 浮点异常 - gcc 错误?