我有一個問題。 在Java中,我需要從wav文件中讀取樣本。 文件格式爲:wav,PCM_SIGNED,2bytes = 16bits的有符號整數,小端... 對象讀取BYTES中的音頻採樣,我需要將這兩個字節轉換爲一個double值。 我試圖用這個公式,但它並不完全正確:以雙倍格式轉換signed int(2bytes,16位)。用Java
mono = (double)((audioBytes[k] & 0xFF) | (audioBytes[k + 1] << 8));
用Matlab的結果進行比較,我總是注意到Matlab和實際值的轉換一個用Java之間的差異。 有人可以幫我嗎? 謝謝, 戴夫
您是否有一個短字節序列的示例,您期望的輸出是什麼,以及您的實際輸出是什麼? – 2011-01-06 15:22:37
如果audioBytes [k]是一個字節,audioBytes [k]&0xFF == audioBytes [k],那麼mask就沒用了。 – 2011-01-06 15:34:26
如果audioBytes [k] == -1,audioBytes [k]&0xFF == 255(在將結果傳遞給System.out.println之後)。 – 2011-01-06 15:50:36