r! n"); (0,1);// позначаємо як chr-код (* position, 8);// записуємо чар код + +; -; + +;
}
}
}
// Записуємо залишилися біти (0,8),
printf (" nCompress completed! n", fileleng);
}
// Розархівація Алгоритм LZ77
/* ==============================
====== Функція зчитування ========
============================== */getbits (int nbits)
{int bitcounter = 8; int indata = 0; bit, data = 0; (; nbits> 0; nbits -)
{(bitcounter == 8)
{= 0; = getc (first_file);
} (indata == EOF)
{("Error writing to First file."); -6;
}
= (indata & 0x80)? 1:0; <<= 1; + = bit; + +; <<= 1;
} data;
}
/* ==============================
======= Функція Витяги =======
============================== */decompress_stud ()
{stat buf; char * pos; i, dist, ch, maxleng; ("Decompress started. n");
// Отримуємо довжину вихідного файлу (fileno (first_file), & fileleng, sizeof (long)); = srcstart; (fileleng> 0)
{((ch = getbits (1)) == 0)// Якщо chr-код, копіюємо в буфер тексту символ
{= getbits (8); (ch, second_file);
* pos = ch; + +; -;
}// Інакше - копіюємо maxleng символів зі словника, починаючи з позиції dist
{= getbits (DICBITS) +1; = getbits (STRBITS) + THRESHOLD +1; (i = 0; i
{
* (pos + i) = * (pos + i-dist); (* (pos + i-dist), second_file);
} + = maxleng; = maxleng;
} (pos> srcstart + TEXTSIZE)// Якщо буфер заповнений, записуємо його на диск і зсуваємо словник в початок буфера
{(srcbuf, pos-DICSIZE, DICSIZE); = srcstart;
}
} (" nDecompress completed.");
}.
Порівняльна таблиця результатів стиснення.
Ім'я файлаІсходний размерРазмер після сжатіяTest1.txt240 КБ27 КБTest2.docx450 КБ50 КБTest3.docx370 КБ40 КБ
Висновок
У даній роботі були розглянуті основні види стискання інформації, їхні характеристики і порівняльні таблиці. Як видно з різноманіття існуючих алгоритмів - кожен з них може бути затребуваний в залежності від завдань, що стоять перед користувачем. Реалізовано алгоритм LZ77 - найбільш ефективний з існуючих алгоритм стиснення інформації. За результ...