在C ++中读取wav块时出现意外的值

时间:2012-11-09 15:51:31

标签: c++ wav

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

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

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

Ran Program Wav Hex Values

  • 此外,有人可以解释如何区分正确的频道数据和左声道数据吗?我似乎无法找到足够的例子。感谢。

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

int SoundData;

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

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

先谢谢大家。

2 个答案:

答案 0 :(得分:0)

SoundData更改为short int是否有帮助?

答案 1 :(得分:0)

(将此作为答案建议):

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

所以

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

应该成为

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