У меня, кажется, легкая проблема, но я не могу добиться желаемых результатов.
Согласно WAV формат, 16-битный wav-файл подписан, и его значения варьируются от -32768 до 32767. Тем не менее, мне кажется, что я получаю только положительные целые числа, что мне не хватает?
Вот скриншот нескольких бит данных, которые я вывел:
Вот код, который я использовал, wav.getFile()
возвращает указатель файла точно после прочтения всех остальных данных заголовка.
int SoundData;
for( int i = 0; i < 32; i++ )
{
fread( &SoundData, 4, 1, wav.getFile() );
cout << SoundData << endl;
}
Спасибо всем заранее.
Меняет ли SoundData
к short int
Помогите?
(собираюсь поставить это как предложение ответа):
Вы читаете 4 байта за раз … разве вы не хотите читать 2 байта за раз (16 бит)?
так
fread( &SoundData, 4, 1, wav.getFile() );
должен стать
fread( &SoundData, 2, 1, wav.getFile() );