Из журнала Info Guide #10, Рязань, 05.2007 Формат пакованного файла MegaLZ Lord Vader Первый байт копируется в выход.Второй - идёт в биты. Биты в байте битов - со старшего. Если нужен бит,а его уже нет (все 8 ко- нчились) - то новый байт выбирается из по- тока. Оттуда же выбираются и байты,обозна- ченные - но только после выборки всех битов ссылки. В формате ссылок: - байт, кото- рый выбирается из потока. 1 - копировать в выход. 000abc - копировать 1 старый байт по смещению FFF8+[abc] от текущей позиции в выходе (abc==000 - смещение FFF8, abc==111 - FFFF) 001 - копировать 2 байта по смещению FF00+ (-1..-256) 0100 - копировать 3 байта по смещению FF00+ 0101abcd - копировать 3 байта по смещению (F[abcd]-1)*256+ (-257..-4352) Более длинные ссылки удобно представить в виде 3 частей: Префикс: 011 Длина ссылки: 1a -> 4+[a] 01ab -> 6+[ab] 001abc -> 10+[abc] 0001abcd -> 18+[abcd] 00001abcde -> 34+[abcde] 000001abcdef -> 66+[abcdef] 0000001abcdefg -> 130+[abcdefg] (тут длина не более 255!) Смещение: 0 - FF00+ назад (-1..-256) 1abcd - (F[abcd]-1)*256+ (-257..-4352) Метка конца потока: 011000000001 Примеры: 000111 - повторить последний байт 001 - повторить последний байт дважды (смещение=-1, длина 2) 011 001101 10000 - ссылка длиной %101+10 = 15 байт со смещением -4352