Un algoritmo di compressione deve specificamente un dizionario di codice e un buffer di uscita , che è del 50 per cento più grandi dei dati . Dati è abbinato e poi compattato alla sua forma semplificata . Ad esempio , se si dispone di un pezzo di 32 byte di codice che può corrispondere a 16 byte , allora si è in grado di ridurre la memoria della metà. Un test di compressione dei file per semplificare la vostra intera base di codice .
Decompressione
decompressione è un po ' più semplice di compressione , perché non richiede una locazione di memoria specifica. Quando si decomprime semplicemente determinare se i dati è una partita o letterale . Se si tratta di una partita , poi la decompressione è inutile e vengono copiati i dati dall'ultimo tampone . Se è un letterale , allora si codifica il differenziale nel buffer di output .
Compressione Codice
Un algoritmo per comprimere i dati usa puntatori per identificare la memoria posizione, match i dati e quindi sottrarre il codice aggiuntivo una volta che è compresso . Così il " if - else" funzione algoritmica potrebbe essere il seguente :
se ( valid_pointer ( partita) && * partita == * && ingresso * ( partita + 1 ) == * ( ingresso + 1) ) {if ( letterale < input) OutputLiteral ( letterale , ingresso - letterale) ; } else + + ingresso ;
decompressione Codice
codice di decompressione invece copia semplicemente letterale di codice in modo che possa essere riprodotto in un buffer di uscita al momento opportuno . E poi sottrae la memoria aggiuntiva dal programma . Il " caso - mentre " la funzione potrebbe apparire come segue :
mentre ( ingresso < end ) {if ( * Ingresso & 0x80 ) { //matchlength = DecodeLength ( e ingresso) ; offset = DecodeOffset ( e ingresso) ; //stesso algoritmo DecodeLengthwhile ( lunghezza - > 0 ) { * output = * (uscita - offset) ; + + uscita ;
software © www.354353.com