Есть два файла А,В. Файл В это копия файла А но в него добавленного немного данных ( 5-10%) в случайные места. Нужно имея файл А и доп. файлик в котором будет описанная разница файлов создать файл В. Позже просто не будет файла В, а сделать его копию раньше нельзя. пример А: abcdef В: abc32def Файл в котором будет описанная разница должен быть минимального размера. Лобовое решение просто побайтно сравнить файлы и отличные байты сохранить, но тогда файл В почти такого же размера как и файл А. Кто что подскажет?
Если достоверно известно, что в файл B данные только добавлены новые байты, и точно не изменены и не удалены какие-либо байты файла A, то задача тоже решается почти в лоб - бежать параллельно двумя указателями, но в файле A передвигать указатель только тогда, когда байты по указателям равны. Там, где не равны - считать разницей и записывать добавочные байты с указанием позиции указателя файла А. Если есть только добавления, то указатель в файле A гарантированно дойдет до конца не позже указателя в файле B.
для указания позиций и длинн добавляемых участков можно применить представление с переменной длиной, определяемой количеством подряд идущих единиц в старших битах представления.