Info Guide
#10
30 апреля 2007 |
|
Форматы - Формат пакованного файла MegaLZ.
Формат пакованного файла MegaLZ Lord Vader Первый байт копируется в выход.Второй - идёт в биты. Биты в байте битов - со старшего. Если нужен бит,а его уже нет (все 8 ко─ нчились) - то новый байт выбирается из по─ тока. Оттуда же выбираются и байты,обозна─ ченные <byte> - но только после выборки всех битов ссылки. В формате ссылок: <byte> - байт, кото─ рый выбирается из потока. 1<byte> - копировать <byte> в выход. 000abc - копировать 1 старый байт по смещению FFF8+[abc] от текущей позиции в выходе (abc==000 - смещение FFF8, abc==111 - FFFF) 001<byte> - копировать 2 байта по смещению FF00+<byte> (-1..-256) 0100<byte> - копировать 3 байта по смещению FF00+<byte> 0101abcd<byte> - копировать 3 байта по смещению (F[abcd]-1)*256+<byte> (-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<byte> - FF00+<byte> назад (-1..-256) 1abcd<byte> - (F[abcd]-1)*256+<byte> (-257..-4352) Метка конца потока: 011000000001 Примеры: 000111 - повторить последний байт 001<byte=FF> - повторить последний байт дважды (смещение=-1, длина 2) 011 001101 10000<byte=0> - ссылка длиной %101+10 = 15 байт со смещением -4352
Другие статьи номера:
Похожие статьи:
В этот день... 9 октября