Ios 将16位短路转换为32位浮点

Ios 将16位短路转换为32位浮点,ios,audio,type-conversion,tone-generator,Ios,Audio,Type Conversion,Tone Generator,在iOS的音调生成器示例中: 我正在尝试在iOS中将短数组转换为Float32 Float32 *buffer = (Float32 *)ioData->mBuffers[channel].mData; short* outputShortBuffer = static_cast<short*>(outputBuffer); for (UInt32 frame = 0, j=0; frame < inNumberFrame

在iOS的音调生成器示例中:

我正在尝试在iOS中将短数组转换为Float32

        Float32 *buffer = (Float32 *)ioData->mBuffers[channel].mData;
        short* outputShortBuffer = static_cast<short*>(outputBuffer);

        for (UInt32 frame = 0, j=0; frame < inNumberFrames; frame++, j=j+2)
        {
            buffer[frame] =  outputShortBuffer[frame];
        }
Float32*buffer=(Float32*)ioData->mBuffers[channel].mData;
short*outputShortBuffer=静态_转换(outputBuffer);
对于(UInt32帧=0,j=0;帧
由于某些原因,当从扬声器播放时,我听到了额外的噪音。我认为从short到Float32的转换有问题?

是的,有问题


考虑浮点采样的值范围是
-1.0如何将浮点数组转换为短数组?
    Float32 *buffer = (Float32 *)ioData->mBuffers[channel].mData;
    short* outputShortBuffer = static_cast<short*>(outputBuffer);

    for (UInt32 frame = 0, j=0; frame < inNumberFrames; frame++, j=j+2)
    {
        buffer[frame] =  ((float) outputShortBuffer[frame]) / 32767.0f;
    }