Il concetto di base è che anziché utilizzare otto bit per rappresentare ciascun byte, si utilizzano rappresentazioni più brevi per byte o sequenze di byte con frequenza più frequente.
Per esempio, se il file è costituito esclusivamente della 0x41 byte (A
) ripetute sedici volte, poi invece di rappresentare come la sequenza di 8-bit 01000001
accorciarlo alla sequenza 1 bit 0
. Quindi il file può essere rappresentato da 0000000000000000
(sedici 0
s).Quindi il file del byte 0x41
ripetuto sedici volte può essere rappresentato dal file costituito dal byte 0x00
ripetuto due volte.
Quindi quello che abbiamo qui è che per questo file (0x41
ripetuto sedici volte) i bit 01000001
non trasmettere tutte le informazioni supplementari sopra il bit 0
. Quindi, in questo caso, gettiamo via i bit estranei per ottenere una rappresentazione più breve.
Questa è l'idea alla base della compressione.
Come altro esempio, si consideri il modello otto byte
0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48
e ora ripeterlo 2048 volte. Un modo per seguire l'approccio sopra è rappresentare i byte usando tre bit.
000 0x41
001 0x42
010 0x43
011 0x44
100 0x45
101 0x46
110 0x47
111 0x48
Ora possiamo rappresentare il modello di byte di cui sopra da 00000101 00111001 01110111
(questo è il modello a tre byte 0x05 0x39 0x77
) ripetuto 2048 volte.
Ma un approccio ancora migliore è quello di rappresentare il modello di byte
0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48
dal singolo bit 0
. Quindi possiamo rappresentare il modello di byte sopra per 0
ripetuto 2048 volte che diventa il byte 0x00
ripetuto 256 volte. Ora abbiamo solo bisogno di memorizzare il dizionario
0 -> 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48
e il modello di byte 0x00
ripetuto 256 volte e abbiamo di compressione del file da 16.384 byte (Modulo dizionario) 256 byte.
Che, in poche parole, è come funziona la compressione. L'intera attività si riduce alla ricerca di rappresentazioni brevi ed efficienti dei byte e delle sequenze di byte in un determinato file. Questa è l'idea semplice, ma i dettagli (trovare la rappresentazione) possono essere abbastanza impegnativi.
Vedi per esempio:
- Data compression
- Run length encoding
- Huffman compression
- Shannon-Fano coding
- LZW
Sembra a me come avete bisogno di andare a wikip edia e fai un po 'di lettura. – skaffman
Facile! Converti in binario e rimuovi gli zeri –
http://www.howstuffworks.com/file-compression.htm –