Tengo algunos problemas al tomar datos de audio almacenados en una matriz de bytes, convertirla en una matriz corta de big-endian, codificarla y luego volver a convertirla en una matriz de bytes. Esto es lo que tengo. Los datos de audio originales se almacenan en audioBytes2. Estoy utilizando el mismo formato para la decodificación con un menos en la función cos en su lugar. Desafortunadamente, cambiar el byte y los tipos de datos cortos no es negociable.matriz de bytes a matriz corta y viceversa en 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++;
}
he hecho todo lo que puedo pensar para hacer este trabajo, pero lo más cerca que he llegado es conseguir que funcione cualquier otro envío/recepción y no tengo ni idea de por qué. Gracias por cualquier ayuda.
¿Qué problemas tienes? –
¿es big-endian o little-endian? Creo que necesitas 'java.nio.ByteBuffer' para manejar esta conversión. –
Posible duplicado de [cómo convertir matriz corta a matriz de bytes] (http://stackoverflow.com/questions/10804852/how-to-convert-short-array-to-byte-array) –