我需要能够将 C SInt32 整数转换为 [-1, 1] 范围内的浮点数并返回。我已经看到关于 24 位整数的这个问题的讨论:
我试过类似的东西:
// 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 超出了它的限制并导致它被截断。
任何建议将不胜感激。