我有一个似乎是一个简单的问题,但我似乎无法得到我想要的结果。
根据Wav Format,一个16位的wav文件被签名,值范围从-32768到32767.但我似乎只能得到正整数,我错过了什么?
这是我输出的几位数据的屏幕截图:
这是我使用的代码,wav.getFile()
在读取所有其他标题数据后完全返回文件指针。
int SoundData;
for( int i = 0; i < 32; i++ )
{
fread( &SoundData, 4, 1, wav.getFile() );
cout << SoundData << endl;
}
先谢谢大家。
答案 0 :(得分:0)
将SoundData
更改为short int
是否有帮助?
答案 1 :(得分:0)
(将此作为答案建议):
你一次读4个字节...你不想一次读取2个字节(16位)吗?
所以
fread( &SoundData, 4, 1, wav.getFile() );
应该成为
fread( &SoundData, 2, 1, wav.getFile() );