Допустим обычный файл состоит из латинских букв. На подобии AAAAABBBBBBBCCCCCCCCCCCAAAAAAAAAAAAADDDDDKOEDAACEKBBDOOO; Мне нужно упаковать это чтобы занимало меньше места. И мочь обращаться как к обычному массиву в языке C по индексу то есть чтобы возможны были операции: char a = file[20]; file[15] = 'L';
Удобно сжимать кусками с известными диапазонами. Чтобы не дешифровать каждый раз при повторных обращениях, выделить буфер. Это не работает при случайных обращениях.
Вариант - куски по возможности сжимаются в коды фиксированной длины, если её не хватает, то вписывается ссылка, где искать остаток кода.