Ich habe ein Problem. In Java muss ich Proben aus einer WAV-Datei lesen. Das Dateiformat ist: wav, PCM_SIGNED, signed int von 2bytes = 16Bits, Little Endian ... Das Objekt liest die Audio-Samples in BYTES und ich muss diese zwei Bytes in einem doppelten Wert konvertieren. Ich habe versucht, diese Formel zu verwenden, aber es ist nicht ganz richtig:Konvertiert signed int (2 Bytes, 16 Bits) im Doppelformat. Mit Java
mono = (double)((audioBytes[k] & 0xFF) | (audioBytes[k + 1] << 8));
die Ergebnisse mit Matlab merke ich immer wieder Unterschiede zwischen den realen Wert in Matlab und konvertiert ein in Java Vergleich. Kann mir bitte jemand helfen? Vielen Dank, Dave
Haben Sie ein Beispiel für eine kurze Bytefolge, was ist Ihre erwartete Ausgabe und was ist Ihre tatsächliche Ausgabe? –
Wenn audioBytes [k] ein Byte ist, audioBytes [k] & 0xFF == audioBytes [k], so ist die Maske nutzlos. –
Wenn audioBytes [k] == -1, audioBytes [k] & 0xFF == 255 (nachdem ich das Ergebnis trotzdem an System.out.println übergeben habe). –