【发布时间】:2012-10-19 01:02:03
【问题描述】:
我需要能够将 C SInt32 整数转换为 [-1, 1] 范围内的浮点数并返回。我看过关于 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 超出了它的限制并导致它被截断。
任何建议将不胜感激。
【问题讨论】:
标签: c++ c floating-point int