Newsgroup: it.comp.lang.c++
Titolo: compressione file

Salve a tutti, vorrei chiedere un favore a tutti coloro che hanno
smanettato con algoritmi di compressione
mi trovo con un file di 1029 byte da comprimere,
la necessità sarebbe portarlo a una dimensione inferiore a 990,
possono sembrare irrisori 39 byte, ma non lo sono affatto,
se qualcuno vuol provare ad aiutarmi posso postarglielo, ne sarei molto
grato.
bye duido
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 grato.
Dipende! Che tipo di file è?
Se sono solo caratteri ASCII ci sono algoritmi di compressione molto
semplici ma efficaci!
Se sono strutture dati propietarie, spesso si riesce a rappresentare le
stesse informazioni su meno bit di quelli generalmente occupati dai tipi
standard che i compilatori mettono a disposizione, ad esempio un tipo enum
di quattro valori potrebbe occupare 2 bit e non un byte.
Comunque la scelta dell'algoritmo da utilizzare è fortemente legata al tipo
di dati che devi comprimere.
Per determinate strutture dati (con word che si ripetono) forse è meglio un
Run Length Encoding.
Viceversa l'efficacia di algoritmi tipo Huffman per file di piccole,
piccolissime dimensioni è da verificare... ma si può provare.
Ci sono dei siti dove si trovano questi algoritmi.
Te ne consiglio uno con dei links:
http://www.oberhumer.com/mfx/compression_links.php
Ciao,
Paolo Ferraresi.

ti ringrazio per il consiglio,
ho già considerato diversi algoritmi di compressione e il migliore che
ho trovato è stato prodotto da winRAR
su questo software però non ho trovato nessun tipo di riferimento
riguardo l'algoritmo usato...
di che tipo è?
uso abitualmente WinZip e ho letto che questo adopera il procedimento
LZ77 + Huffman
sarebbe interessante conoscere WinRAR ma non ho trovato niente in rete
che mi chiarisse le idee
grazie comunque duido



Come puoi immaginare non è possibile comprimere qualunque file di 1029 byte
in soli 990 byte, per cui se cerchi una soluzione generale non la trovi.
Se ti interessa comprimere un particolare file o files che hanno determinate
caratteristiche potrei tentare di darti dei consigli, ma se non mi dici che
file hai sarà difficile aiutarti

 grazie comunque duido
Ciao.

 E' propietario, comunque dovrebbe essere un "aritmetico" per gli addetti ai lavori.
ho letto bene, "aritmetico",  forse intendevi dire statistico ?
non ho mai sentito parlare di "aritmetico".
bye dudi


 ho capovolto internet e libri molto buoni, mi sono deciso di scrivere
provato bzip2 + tar?

ti ringrazio per il suggerimento, l'ho provato tutti le diverse
possibilità offerte da PowerArchived tra cui anche  quel formato...
bye duido



OK, parliamone.
1) Che tipo di file e'? Quali dati contiene? Se sai che sara' di ESATTAMENTE
1029 byte sai gia' anche che tipo di dati saranno contenuti in esso, almeno
a livello di datatype.
Questo significa che potresti avere delle variabili comprimibili, ad esempio
particolari tipi di stringa.
Senza la struttura, comunque, architettare un modo per comprimere il file e'
dura.
Ciaotutti,
*

Ciao alessandro, il tipo del file non è specificato,
non ha struttura e la vedo molto dura anch'io, per questo speravo in un
consiglio amichevole...
l'unico algoritmo che ha superato le prove di compressione che mi
servono è stato WinRAR, tu conosci il tipo di algoritmo provato?



Per quanto WinRAR comprima molto bene:
1) l'algoritmo e' protetto da copyright
2) comunque hai del codice che ti pesa sul programma finale, molto piu' di
39 byte
3) non e' possibile avere la certezza che dato un qualsiasi input di 1029
byte ti restituisca un output sotto i 990 byte; anzi, e' certo il contrario,
se l'input e' davvero qualsiasi.
Ciaotutti,
*