Stora datorprogram och filer ofta innehåller för mycket data för att enkelt överföra eller spara dem . För att lösa detta problem , har programmerare kommit med smarta algoritmer eller system för att komprimera och dekomprimera filer . De används för att minska storleken på bilden , video , programvara och andra filer så att de blir lättare att använda. Komprimering
komprimering algoritm behöver specifikt en ordbok av kod och en utgående buffert som är 50 procent större än uppgifterna . Data matchas och sedan krympt ner till sin förenklad form . Till exempel , om du har en 32 byte bit kod som kan matcha en 16 byte , så du har möjlighet att minska minnet med hälften . En komprimering fil tester för att förenkla hela din kodbas .
Dekompression
dekompression är lite enklare än kompression eftersom den inte kräver en viss minnesplats . När du packa du helt enkelt avgöra om uppgifterna är en match eller bokstavlig . Om det är en match, då dekompression är onödigt och data kopieras från den sista bufferten. Om det är en bokstavlig , då du koda skillnaden till utgångsbufferten .
Compression kod
En algoritm för att komprimera data använder pekare för att identifiera minnet plats , matcha data och sedan subtrahera den extra koden när den komprimeras . Så " om - annars " algoritmisk funktion kan se ut så här :
om ( valid_pointer ( match ) && * match == * Ingång && * ( match + 1 ) == * ( ingång + 1 ) ) {if ( bokstavlig < input ) OutputLiteral ( bokstavligt , input - bokstavligt ) ; } else + + ingång;
dekompression kod
dekomprimering kod på den andra sidan kopierar endast bokstavlig koden så att den kan reproduceras i en utgångsbuffert vid lämplig tidpunkt . Det subtraherar därefter ytterligare minne från programmet . Den " om - då" -funktionen kan visas på följande sätt :
samtidigt ( input < end ) {if ( * input & 0x80 ) { //matchlength = DecodeLength ( & input ) , offset = DecodeOffset ( & input ) , //samma algoritm som DecodeLengthwhile ( längd - > 0 ) { * output = * ( utgång - offset ) , + + utgång;