EBML (англ. Extensible Binary Meta Language — расширяемый бинарный метаязык) — двоичный формат файлов, при создании которого стояла задача создать аналог XML для двоичных данных. Изначально был создан для мультимедиа-контейнера Matroska, используется в WebM.
Важной особенностью формата является наличие «значений по умолчанию» для многих элементов, это позволяет создавать файл без детального описания всех (повторяющихся из файла в файл) параметров.
Одной из особенностей формата являются числа переменного размера. Кодирование числа осуществляется подобно кодированию символов в кодировке UTF-8, размер числа определяется количеством нулевых бит (точнее, положением первого ненулевого бита). Максимальное число вычисляется как 2количество битов-2.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | битов | кодируемый диапазон |
---|---|---|---|---|---|---|---|---|---|
1××××××× | 7 | [0;126] | |||||||
01×××××× | ×××××××× | 14 | [0;16382] | ||||||
001××××× | ×××××××× | ×××××××× | 21 | [0;2097150] | |||||
0001×××× | ×××××××× | ×××××××× | ×××××××× | 28 | [0;268435454] | ||||
00001××× | ×××××××× | ×××××××× | ×××××××× | ×××××××× | 35 | [0;34359738366] | |||
000001×× | ×××××××× | ×××××××× | ×××××××× | ×××××××× | ×××××××× | 42 | [0;4398046511102] | ||
0000001× | ×××××××× | ×××××××× | ×××××××× | ×××××××× | ×××××××× | ×××××××× | 49 | [0;562949953421310] | |
00000001 | ×××××××× | ×××××××× | ×××××××× | ×××××××× | ×××××××× | ×××××××× | ×××××××× | 56 | [0;72057594037927934] |