バイト配列に格納されたオーディオデータをビッグエンディアンの短い配列に変換してエンコードし、バイト配列に戻すときに問題が発生します。ここに私が持っているものがあります。元のオーディオデータはaudioBytes2に格納されます。私は代わりにcos関数のマイナスを使ってデコードするのと同じフォーマットを使用しています。残念ながら、バイトとショートのデータ型を変更することはできません。バイト配列を短い配列に戻してJavaに戻す
short[] audioData = null;
int nlengthInSamples = audioBytes2.length/2;
audioData = new short[nlengthInSamples];
for (int i = 0; i < nlengthInSamples; i++) {
short MSB = (short) audioBytes2[2*i+1];
short LSB = (short) audioBytes2[2*i];
audioData[i] = (short) (MSB << 8 | (255 & LSB));
}
int i = 0;
while (i < audioData.length) {
audioData[i] = (short)(audioData[i] + (short)5*Math.cos(2*Math.PI*i/(((Number)EncodeBox.getValue()).intValue())));
i++;
}
short x = 0;
i = 0;
while (i < audioData.length) {
x = audioData[i];
audioBytes2[2*i+1] = (byte)(x >>> 0);
audioBytes2[2*i] = (byte)(x >>> 8);
i++;
}
私はこの仕事をするために私は考えることができるすべてを行っているが、私が来ている最も近い、それは他のすべてのエンコード/デコードを動作するようになっていると私は理由は分かりません。助けてくれてありがとう。
あなたはどんな問題を抱えていますか? –
はビッグエンディアンかリトルエンディアンですか?この変換を処理するには 'java.nio.ByteBuffer'が必要です。 –
[短い配列をバイト配列に変換する方法]の複製があります(http://stackoverflow.com/questions/10804852/how-to-convert-short-array-to-byte-array) –