Неожиданные значения при чтении блоков wav в Stack Overflow

У меня, кажется, легкая проблема, но я не могу добиться желаемых результатов.

Согласно WAV формат, 16-битный wav-файл подписан, и его значения варьируются от -32768 до 32767. Тем не менее, мне кажется, что я получаю только положительные целые числа, что мне не хватает?

Вот скриншот нескольких бит данных, которые я вывел:

Ран Программа
Wav Hex Values

  • Кроме того, кто-то может объяснить, как разделить данные правого канала и данные левого канала? Я не могу найти достаточно примеров этого. Благодарю.

Вот код, который я использовал, wav.getFile() возвращает указатель файла точно после прочтения всех остальных данных заголовка.

int SoundData;

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

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

Спасибо всем заранее.

0

Решение

Меняет ли SoundData к short int Помогите?

0

Другие решения

(собираюсь поставить это как предложение ответа):

Вы читаете 4 байта за раз … разве вы не хотите читать 2 байта за раз (16 бит)?

так

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

должен стать

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

По вопросам рекламы [email protected]