Почему целые байты хранятся в обратном порядке? Это касается только заголовков?

В настоящее время я пытаюсь расшифровать файлы WAV. От заголовков к данным PCM.

Я нашел PDF-файл (http://www.tdt.com/T2Support/technical_notes/tn0132.pdf), подробно описывающий анатомию файла WAV, и мне удалось извлечь и осмыслить соответствующие данные заголовка с помощью Ghex2. Но мои вопросы:

Почему целые байты хранятся в обратном порядке? т.е. дек. 20 хранится как 0x14000000 вместо 0x00000014.

Целые числа данных PCM также сохраняются в обратном порядке?


person Z3t    schedule 11.09.2010    source источник
comment
Обратного нет. Это все по соглашению. Поищите в википедии Endianness.   -  person Detmar    schedule 12.09.2010
comment
... и как только вы поймете, что как прямой, так и прямой порядок байтов разумны, попробуйте сосредоточиться на смешанном порядке байтов. Тогда плачь.   -  person dmckee --- ex-moderator kitten    schedule 12.09.2010
comment
Однако маленький порядок байтов не является разумным. что в этом разумного?   -  person MarcusJ    schedule 25.06.2015


Ответы (2)


Файлы WAV имеют прямой порядок следования байтов (сначала младшие значащие байты), потому что формат возник для операционных систем, работающих на компьютерах с процессорами Intel, которые используют формат прямого порядка байтов для хранения чисел.

Если вы думаете об этом, это имеет смысл, потому что, если вы хотите преобразовать длинное целое в короткое или даже в символ, начальный адрес остается прежним, вы просто смотрите на меньшее количество байтов.

Следовательно, для 16-битного кодирования и выше формат с прямым порядком байтов будет использоваться и для PCM. Это очень удобно, так как вы сможете получить их как целые числа. не забывайте, что они будут храниться как целые числа со знаком, дополненные до двух, если они 16-битные, но не если они 8-битные. (см. http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html для более подробной информации)

person FixerMark    schedule 11.09.2010
comment
Странно, что на упомянутой странице указано, что число должно храниться в форме с прямым порядком байтов (но на самом деле этот формат использует обратный порядок байтов). - person Groo; 31.10.2013
comment
На упомянутой странице больше ничего не говорится, поскольку она исчезла... (Я обнаружил, что это довольно часто происходит со ссылками на веб-сайты колледжей через несколько лет.) - person Peter Hansen; 09.02.2015
comment
Я не уверен, что мой файл не соответствует или что, но все числовые поля (частота дискретизации, битрейт и т. д.) хранятся с прямым порядком байтов, а все поля слов (RIFF, WAVE, fmt и т. д.) хранятся с обратным порядком байтов. - person MarcusJ; 25.06.2015

"Назад" субъективно. Некоторые машины имеют большой формат endian, другие маленькие - порядок байтов. В контекстах, ориентированных на байты, таких как форматы файлов и сетевые протоколы, порядок может быть произвольным. Некоторым форматам нравится указывать прямой или обратный порядок байтов, другим нравится быть гибкими и принимать любую форму с флагом, указывающим, какая из них используется.

Похоже на файлы WAV точно так же, как с прямым порядком байтов.

person Ned Batchelder    schedule 11.09.2010