2010-09-11 6 views
11

Ich versuche derzeit, WAV-Dateien zu entziffern. Von den Headern zu den PCM-Daten.Warum werden ganze Zahlen rückwärts gespeichert? Gilt dies nur für Kopfzeilen?

Ich habe eine PDF (http://www.tdt.com/T2Support/technical_notes/tn0132.pdf) gefunden, die die Anatomie einer WAV-Datei detailliert, und ich bin in der Lage, die entsprechenden Header-Daten mit Ghex2 zu extrahieren und zu verstehen. Aber meine Fragen sind:

Warum sind die ganzen Zahlen Bytes rückwärts gespeichert? I.e. dez. 20 wird als 0x14000000 statt 0x00000014 gespeichert.

Sind die ganzen Zahlen der PCM-Daten auch rückwärts gespeichert?

+2

Es gibt kein "rückwärts". Es ist alles nach Konvention. Search wikipedia für Endianness. – Detmar

+2

... und wenn dir klar ist, dass sowohl die große als auch die kleine Endianz vernünftig ist, versuche, deine Gedanken um gemischte Endiannität zu wickeln. Dann weine. – dmckee

+1

Little Endian ist jedoch nicht sinnvoll. [was ist sinnvoll möglich ist?] (Http://fusion.co.id/wp-content/uploads/2015/02/pig-little-endian-1.jpg) – MarcusJ

Antwort

11

WAV-Dateien sind Little-Endian (niedrigstwertiges Byte zuerst), da das Format für die Betriebssysteme auf Intel Prozessor-basierte Maschinen, die das Little-Endian-Format entstanden Zahlen zu speichern.

Wenn Sie darüber nachdenken, macht es Sinn, denn wenn Sie eine lange Ganzzahl in eine kurze oder sogar ein Zeichen umwandeln wollen, bleibt die Startadresse gleich, Sie sehen nur weniger Bytes.

Folglich ist für 16-Bit-Codierung nach oben, Little-Endian-Format wird als auch für das PCM verwendet werden. Dies ist sehr praktisch, da Sie sie als ganze Zahlen ziehen können. Vergessen Sie nicht, dass sie als Zweierkomplement-Ganzzahlen mit Vorzeichen gespeichert werden, wenn sie 16 Bit sind, aber nicht, wenn sie 8 Bit sind. (für weitere Einzelheiten siehe http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html)

+0

Es ist seltsam, dass die genannte Seite besagt, dass Nummer sollte in Big-Endian-Form gespeichert werden (aber das Format verwendet tatsächlich Little-Endian). – Groo

+0

Die erwähnte Seite gibt nichts mehr an, da sie verschwunden ist ... (Ich habe festgestellt, dass das ziemlich häufig mit Links zu College-Websites nach ein paar Jahren passiert.) –

+0

Ich bin mir nicht sicher, ob meine Datei nicht übereinstimmt oder Was, aber alle Nummernfelder (Abtastrate, Bitrate, usw.) werden in Little Endian gespeichert, während alle Wortfelder (RIFF, WAVE, FMT, usw.) in Big Endian gespeichert werden. – MarcusJ

3

"Rückwärts" ist subjektiv. Einige Maschinen sind groß- endian, andere sind wenig- endian. In Byte-orientierten Kontexten wie Dateiformaten und Netzwerkprotokollen ist die Reihenfolge beliebig. Einige Formate geben gerne Big- oder Little-Endian an, andere sind flexibel und akzeptieren beide Formate, wobei ein Flag anzeigt, welches verwendet wird.

Sieht aus wie WAV-Dateien wie Little-Endian.