байтовый массив в короткий массив и обратно в java

У меня проблемы с преобразованием аудиоданных, хранящихся в массиве байтов, в короткий массив с прямым порядком байтов, их кодированием, затем изменив его обратно в массив байтов. Вот что у меня есть. Исходные аудиоданные хранятся в audioBytes2. Вместо этого я использую тот же формат для декодирования с минусом в функции cos. К сожалению, изменение байтовых и коротких типов данных не подлежит обсуждению.

    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++;
    }

Я сделал все, что мог придумать, чтобы заставить эту работу работать, но самое близкое, что я пришел, - это заставить его работать при любом другом кодировании / декодировании, и я понятия не имею, почему. Спасибо за любую помощь.

43
задан Aaron 11 April 2011 в 18:12
поделиться