2010-09-11 13 views
11

Attualmente sto cercando di decifrare i file WAV. Dalle intestazioni ai dati PCM.Perché i byte interi sono memorizzati all'indietro? Questo vale solo per le intestazioni?

Ho trovato un PDF (http://www.tdt.com/T2Support/technical_notes/tn0132.pdf) che descrive in dettaglio l'anatomia di un file WAV e sono stato in grado di estrarre e dare un senso ai dati di intestazione appropriati utilizzando Ghex2. Ma le mie domande sono:

Perché i byte interi sono memorizzati all'indietro? Cioè Dicembre 20 viene memorizzato come 0x14000000 anziché 0x00000014.

Anche gli interi dei dati PCM sono memorizzati all'indietro?

+2

Non c'è "indietro". È tutto per convenzione. Cerca wikipedia per Endianness. – Detmar

+2

... e una volta chiarito che sia il big e il little endianness sono ragionevoli, prova ad avvolgere la tua mente su un misto di endianness. Quindi piangi. – dmckee

+1

little endian non è comunque ragionevole. [che dire di questo è ragionevole?] (Http://fusion.co.id/wp-content/uploads/2015/02/pig-little-endian-1.jpg) – MarcusJ

risposta

11

I file WAV sono little-endian (i byte meno significativi per primi) perché il formato è originario per i sistemi operativi in ​​esecuzione su computer basati su processori Intel che utilizzano il formato little endian per memorizzare i numeri.

Se ci pensi un po 'ha senso perché se vuoi trasmettere un intero lungo ad un breve o addirittura un carattere l'indirizzo di partenza rimane lo stesso, basta guardare meno byte.

Di conseguenza, per la codifica a 16 bit verso l'alto, verrà utilizzato anche il formato little-endian per il PCM. Questo è abbastanza utile dato che sarai in grado di inserirli come numeri interi. non dimenticare che saranno archiviati come interi a complemento del complemento a due se sono 16 bit, ma non se sono 8 bit. (vedi http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html per ulteriori dettagli)

+0

È strano che la pagina citata afferma che il numero deve essere memorizzato in formato big-endian (ma il formato utilizza effettivamente little-endian). – Groo

+0

La pagina menzionata non dice più nulla come è svanita ... (Ho scoperto che succede spesso con i link dei siti web del college, dopo alcuni anni.) –

+0

Non sono sicuro che il mio file non sia conforme o cosa, ma tutti i campi numerici (frequenza di campionamento, bit rate, ecc.) sono memorizzati in little endian, mentre tutti i campi di parole (RIFF, WAVE, fmt, ecc.) sono memorizzati in big endian. – MarcusJ

3

"Indietro" è soggettivo. Alcune macchine sono grandi- endian, altre sono piccole- endian. In contesti orientati ai byte come formati di file e protocolli di rete, l'ordine è arbitrario. Alcuni formati preferiscono specificare big o little-endian, altri preferiscono essere flessibili e accettare una forma, con una bandiera che indica che è in uso.

Sembra file WAV proprio come little-endian.