Структура данных VRLE8 ────────────────────── ┌────────────────────────────────────────────┐ │ Dec - Десятичная система счисления. │ │ Hex - Шестнадцатеричная система счисления. │ │ Bin - Двоичная система счисления. │ └────────────────────────────────────────────┘ Заголовок VRLE8 (6 байт). Информационный байт. │ │ Информационный байт. ┌────┼────┬────┬────┬────┐ │ │ Информационный байт. │ │ │ │ │ │ │ │ │ Информационный байт. V R L E 8 0 │ │ │ │ ┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬─ ┌── Закодированная строка: 11155555b333. Hex (байты): │ 56 │ 52 │ 4c │ 45 │ 38 │ 00 │ 83 │ 31 │ 85 │ 35 │ 01 │ 62 │ 83 │ 33 │ ... и т.д. ──┘ └────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴─ ┌── Биты: 7, 6, 5, 4 - старший полубайт. Биты: 3, 2, 1, 0 - младший полубайт. │ │ │ │ │ │ См. таблицу перевода чисел => Hex и Bin! Зарезервированный байт. │ │ │ Dec: 7 6 5 4 │ 3 2 1 0 <= Бит 7, Бит 6 ... Бит 0. │ │ │ ┌───┬───┬───┬───┼───┬───┬───┬───┐ Таблица перевода чисел │ │ │ Bin: │ 1 │ 0 │ 0 │ 0 │ 0 │ 0 │ 1 │ 1 │ <= Если 7 бит единица, то повторяющиеся байты! ┌─────┬─────┬──────┐ │ │ │ └───┴───┴───┴───┼───┴───┴───┴───┘ Битами 6, 5, 4, 3, 2, 1, 0 задаётся размер "порции" (сколько раз повторить)! │ Dec │ Hex │ Bin │ │ │ │ ... ├─────┼─────┼──────┤ │ │ Dec: 7 6 5 4 3 2 1 0 <= Бит 7, Бит 6 ... Бит 0. │ 0 │ 0 │ 0000 │ │ │ ┌───┬───┬───┬───┼───┬───┬───┬───┐ │ 1 │ 1 │ 0001 │ │ │ Bin: │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 1 │ <= Если 7 бит ноль, то неповторяющиеся байты! │ 2 │ 2 │ 0010 │ │ │ └───┴───┴───┴───┼───┴───┴───┴───┘ Битами 6, 5, 4, 3, 2, 1, 0 задаётся размер "порции" (сколько нужно переписать байт)! │ 3 │ 3 │ 0011 │ │ │ Что переписать? Идущие байты за информационным байтом (в данном случае - это один байт)! │ 4 │ 4 │ 0100 │ │ Dec: 7 6 5 4 3 2 1 0 <= Бит 7, Бит 6 ... Бит 0. │ 5 │ 5 │ 0101 │ │ ┌───┬───┬───┬───┼───┬───┬───┬───┐ │ 6 │ 6 │ 0110 │ │ Bin: │ 1 │ 0 │ 0 │ 0 │ 0 │ 1 │ 0 │ 1 │ <= Если 7 бит единица, то повторяющиеся байты! │ 7 │ 7 │ 0111 │ │ └───┴───┴───┴───┼───┴───┴───┴───┘ Битами 6, 5, 4, 3, 2, 1, 0 задаётся размер "порции" (сколько раз повторить)! │ 8 │ 8 │ 1000 │ │ ... │ 9 │ 9 │ 1001 │ Dec: 7 6 5 4 3 2 1 0 <= Бит 7, Бит 6 ... Бит 0. │ 10 │ A │ 1010 │ ┌───┬───┬───┬───┼───┬───┬───┬───┐ │ 11 │ B │ 1011 │ Bin: │ 1 │ 0 │ 0 │ 0 │ 0 │ 0 │ 1 │ 1 │ <= Если 7 бит единица, то повторяющиеся байты! │ 12 │ C │ 1100 │ └───┴───┴───┴───┼───┴───┴───┴───┘ Битами 6, 5, 4, 3, 2, 1, 0 задаётся размер "порции" (сколько раз повторить)! │ 13 │ D │ 1101 │ Что повторить? Повторить следующий байт за информационным байтом! │ 14 │ E │ 1110 │ Лицензия (License): Free. │ 15 │ F │ 1111 │ Ukraine. (C) Демидов С.В. Мой сайт: https://drilnet.github.io └─────┴─────┴──────┘