чтение файла .wav: преобразование байтов с прямым и обратным порядком в целое число - PullRequest
2 голосов
/ 14 августа 2011

Я пишу небольшую программу для чтения WAV-файла. В соответствии со спецификациями wav, на которые я смотрел:

graphic of .wav file format

похоже, что вторые четыре байта представляют собой 4-байтовое число с прямым порядком байтов. Я думаю, это означает, что младший байт - это первый, байт номер 5, поэтому, другими словами, я читаю их слева направо. Из того, что я читал, я думаю, что я должен умножить их следующим образом:

n=bytearray[5]+(bytearray[6]*256)+(bytearray[7]*256)+(bytearray[8]*16777216)

так что байт в

, но получается довольно большое число - 1 459 618 138 в десятичном формате для файла длиной всего 90 КБ. Поэтому я думаю, что я где-то здесь ошибаюсь.

для других чисел, если я понимаю разницу между прямым и младшим порядком байтов - справа налево и слева направо в порядке байтов?

1 Ответ

2 голосов
/ 14 августа 2011

Массив проиндексирован от 0, поэтому вы хотите 4, 5, 6 и 7 байтов:

n=bytearray[4]+(bytearray[5]*256)+(bytearray[6]*65536)+(bytearray[7]*16777216)

(Обратите внимание, что ваш третий множитель должен быть 65536, а не 256.)

...