Stor dataprogrammer og filer ofte inneholder for mye data å enkelt overføre eller lagre dem . For å løse dette problemet, har programmerere komme opp med geniale algoritmer eller systemer for å komprimere og dekomprimere filer. De brukes til å redusere størrelsen på bildet, video, programvare og andre filer, slik at de vil være mer lett anvendelig . Komprimering
komprimering algoritmen trenger spesielt en ordbok med kode og en utgang buffer som er 50 prosent større enn dataene. Data blir matchet og deretter krympet ned til forenklet form . For eksempel , hvis du har en 32 byte stykke kode som kan matche en 16 byte , så er du i stand til å redusere minnet til det halve . En komprimeringsfil tester for å forenkle hele kodebasen .
Dekompresjon
Dekompresjon er litt enklere enn kompresjon fordi den ikke krever en bestemt minneområde . Når du dekomprimere du bare finne ut om data er en kamp eller bokstavelig . Hvis det er en kamp , så dekompresjon er unødvendig og data kopieres fra den siste buffer . Hvis det er en bokstavelig , så du koder differensialen til output buffer .
Compression Code
En algoritme for å komprimere data bruker pekere til å identifisere minnet plassering , samsvarer med dataene og deretter trekke den ekstra kode når den er komprimert. Så " hvis - annet " algoritmisk funksjon kan vises som følger : en
if ( valid_pointer ( kamp ) && * kamp == * Input && * ( kamp + 1 ) == * (inngang + 1 ) ) { if ( bokstavelig < inngang) OutputLiteral ( bokstavelig , inngang - bokstavelig ); } else + + inngang ;
Dekompresjon Code
dekompresjon kode på den annen side bare kopierer bokstavelig kode slik at det kan reproduseres i en utgangsbuffer på riktig tidspunkt . Det trekker deretter den ekstra minne fra programmet. Den " hvis -while "-funksjonen kan vises som følger : en
mens (inngang < end) { if ( * inngang & 0x80 ) { //matchlength = DecodeLength (& input); offset = DecodeOffset (& input); //samme algoritme som DecodeLengthwhile (lengde - > 0 ) { * output = * (output - offset ) ; + + utgang;