0

我有一个似乎很简单的问题,但我似乎无法得到我想要的结果。

根据Wav Format,一个 16 位 wav 文件已签名,值范围从 -32768 到 32767。但我似乎只能得到正整数,我错过了什么?

这是我输出的几位数据的屏幕截图:

跑计划 Wav 十六进制值

  • 另外,有人能解释一下如何区分右声道数据和左声道数据吗?我似乎找不到足够的例子。谢谢。

这是我使用的代码,wav.getFile()在读取所有其他标头数据后完全返回文件指针。

int SoundData;

        for( int i = 0; i < 32; i++ )
        {

            fread( &SoundData, 4, 1, wav.getFile() );
            cout << SoundData << endl;
        }

提前谢谢大家。

4

2 回答 2

0

改变SoundDatashort int帮助吗?

于 2012-11-09T15:56:25.713 回答
0

(将其作为答案建议):

您一次读取 4 个字节......您不想一次读取 2 个字节(16 位)吗?

所以

fread( &SoundData, 4, 1, wav.getFile() );

应该成为

fread( &SoundData, 2, 1, wav.getFile() );
于 2012-11-09T16:01:12.590 回答