Newsgroup: it.comp.java
Titolo: Compressione di stringhe...

Ciao a tutti, chiedo prima di tutto perdono per inoltrare nuovamente questo 
post, ma il precedente non aveva ottenuto risposta alcuna. Spero di 
stuzzicare questa volta la vostra attenzione perchè è effettivamente un 
problema che potrebbe essere utile a molti.
Ho bisogno di inviare dei dati testuali attraverso GPRS e come ben sapete si
paga a traffico. Ecco il perchè della necessità di utilizzare una
compressione efficace del testo che sia supportata sia da J2ME sia da J2SE
per l'invio del testo. Avevo naturalmente pensato ad usare il pacchetto 
java.util.zip ma ho notato che questo può essere utile solo per stream di 
dati e quindi per lettura/scrittura files e per la compressione di stream 
I/O in TCP. A me invece servirebbe semplicemente generare un metodo che 
comprima una stringa data in pasto ed uno che lo decomprima, semplice 
semplice :-)
insomma, cercavo qualcosa tipo String stringaCompressa = 
comprimi(stringaNonCompressa) dove comprimi sia il mio metodo di 
compressione della stringa in parole povere, dove sia valido un vice-versa 
con il metodo decomprimi :-)
Grazie a tutti, attendo fiducioso...

 ha scritto nel messaggio
news:N5o4d.372505$5D1.16...@news4.tin.it...


> maiuscoli, minuscoli e numeri) puoi inventarti una codifica tua e
trasformi
Se posti qua vuol dire che non hai voglia di leggerti gli algoritmi di
compresione che effetticvamente non sono cosi' leggeri.
Andando avanti con il suggerimento del precedente post, puoi andafre sulla
grammatica italiana e prendere le sequenze di catratteri frequenti e
codificarli
ad esempio:
stra = 01
stri = 02
per = 03
sup = 04
e cosi' hai altre idee per la TUA codifica
come dissero
non e' gratis
  cya good work
             Nicola
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

> non e' gratis
E utilizzare invece java.util.zip? Come potrei farlo riguardo alla 
compressione di stringhe senza fare Stream verso file o verso TCP? 

 compressione di stringhe senza fare Stream verso file o verso TCP?
Mai usata la libreria
pero' se prendi confidenza con gli stream scopri che ce ne sono parecchi
tipi
fisicamente pero' sono + o - la stessa roba e puoi convertirli uno con
l'altro o tramite cast o tramite new
ce ne sono alcuni che possono darti i Byte[] anziche scrivere su una pipe,
a quel punto dai byte allo stringbuffer e/o la stringa il gioco e' semplice
   N


http://javaalmanac.com/egs/java.util.zip/CompArray.html
http://javaalmanac.com/egs/java.util.zip/DecompArray.html
Ciao
Franco


Anche io non l'ho mai usata, cmq direi che la soluzione più astuta sia 
associare una stream zip al socket che usi sia in entrata che in uscita 
e comprimere tutto il flusso di dati spediti/ricevuti. Ovvio che devi 
usare una stream e non un datagram, quindi devi prevedere dei buffer per 
la lettura dei dati decompressi e un carattere/stringa speciale per 
indicare la fine del comando (un pò come il doppio a capo di http).
Operativamente, anche se non l'ho mai fatto, immagino che devi lavorare 
nello stesso modo in cui faresti con un file, ovviamente dando in pasto 
allo stream zip l'input/output stream del socket.
Spero di esserti stato utile.
Ivan