0

簡単な問題のようですが、希望する結果が得られないようです。

Wav形式によると、16ビットのwavファイルは署名されており、値の範囲は-32768〜32767です。それでも、正の整数しか取得できないようですが、何が欠けていますか?

これが私が出力した数ビットのデータのスクリーンショットです:

ランプログラム Wav16進値

  • さらに、誰かが右チャネルデータと左チャネルデータを区別する方法を説明できますか?私はこれの十分な例を見つけることができないようです。ありがとう。

これが私が使用したコードで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 に答える