Kompression & dekompression Algoritmer

March 12

Kompression & dekompression Algoritmer


Stora datorprogram och filer innehåller ofta alltför mycket data för att enkelt överföra eller spara dem. För att lösa detta problem, har programmerare komma med geniala algoritmer eller system för att komprimera och packa upp filer. De används för att minska storleken på bilden, video, programvara och andra filer så att de kommer att vara lättare att använda.

Kompression

En komprimeringsalgoritm specifikt behöver en ordbok av kod och en utgångsbuffert 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, då kan du minska mängden minne med hälften. En kompressions fil tester för att förenkla hela din kodbas.

Dekompression

Dekompression är lite enklare än komprimering eftersom den inte kräver en specifik minnesplats. När du packa du bestämma helt enkelt om data är en match eller bokstavlig. Om det är en match, då dekomprimering är onödig och data kopieras från den sista bufferten. Om det är en bokstavlig, då du koda skillnaden till utgångsbufferten.

komprimering kod

En algoritm för att komprimera data använder pekare för att identifiera minnesplatsen, matcha data och sedan subtrahera tilläggsnummer när den komprimeras. Så "om - annars" algoritmisk funktion kan visas på följande sätt:

if (valid_pointer (match) && match == input && (match + 1) == (ingång + 1)) {

if (literal < input)
OutputLiteral(literal, input - literal);

}
annan

++input;

dekomprimering kod

En dekompression kod å andra sidan enbart kopior bokstav kod så att den kan återskapas i en utgångsbuffert vid lämplig tidpunkt. Det drar sedan ytterligare minne från programmet. Den "om-while" -funktionen kan visas på följande sätt:

while (input <slut) {
if (* ingång och 0x80) {// match

length = DecodeLength(&amp;input);
offset = DecodeOffset(&amp;input); // same algorithm as DecodeLength
while (length-- > 0)
{
*output = *(output - offset);
++output;


        

Välkommen till dig för att skicka en kommentar:

            
            
            
            

© 2020 Astrixsoft.com | Contact us: webmaster# astrixsoft.com