Что означает «формат переменной длины»? - PullRequest
1 голос
/ 07 мая 2020

Извините за основной c вопрос.

После того, как я понял структуру wav-файла, я перехожу к пониманию структуры midi-файла.

Читая это https://github.com/colxi/midi-parser-js/wiki/MIDI-File-Format-Specifications документация о файлах midi.

Я не мог понять ту часть, в которой была показана таблица «Значения» и «Переменной длины».

Как C8 превратилось в 8148 с переменной длиной?

Как шестнадцатеричный код 100000 превратился в C08000 с переменной длиной?

1 Ответ

0 голосов
/ 07 мая 2020

При кодировании с переменной длиной фактических данных используется 7 бит на байт. Итак, чтобы закодировать значение, которое имеет более 7 бит, вы должны разбить его на столько 7-битных частей, сколько необходимо, а затем добавить 1 MSB ко всем, кроме последней:

            11001000   original value
        1    1001000   7-bit parts
1 0000001  0 1001000   add signal bit
 10000001   01001000   encoded bytes
...