我需要能够将 C SInt32 整数转换为 [-1, 1] 范围内的 float 并返回。我已经看到关于 24 位整数的这个问题的讨论:
C/C++ - Convert 24-bit signed integer to float
我也试过类似的东西:
// Convert int - float
SInt32 integer = 1;
Float32 factor = 1;
Float32 f = integer / (0x7FFFFFF + 0.5);
// Perform some processing on the float
Process(f);
// Scale the float
f = f * factor;
// Convert float - int
integer = f * (0x7FFFFFF + 0.5);
但是这不起作用。我知道它不起作用,因为我正在做的工作涉及音频编程并且转换会导致嘶嘶声。
我很确定这是一个转换问题,因为当我通过将因子设置为 0.0001 使浮点变小时,噼啪声消失了。也许反向转换使 int 超出了它的限制并导致它被截断。
如有任何建议,我们将不胜感激。
最佳答案
继续阅读 IEEE floating point formats . IEEE 32-bit float仅支持 24 位有效位,因此如果您转换 32 位整数,您将丢失低 8 位。
关于c++ - C/C++ - 如何将带符号的 32 位整数转换为 float 并返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13126297/