Nessuno sa dirmi come posso comprimere delle stringhe attraverso il codice?
Nessuno sa dirmi come posso comprimere delle stringhe attraverso il codice?
Complimenti per il titolo.![]()
PS. Comunicazione di servizio, non ho capito una ceppa neanche della domanda.![]()
Scusa ma ho sbagliato a scrivere il titolo!
Il mio problema è questo:
Ho una form gigantesca e devo spedire i suoi dati ad una altra pagina, fin qui tutto ok.
Quello che voglio fare io è passare questi dati ad una funzione di compressione (non so però come farla) che li comprime e la spedisce.
La pagina che riceve poi farà il procedimento inverso.
Grazie![]()
Ma non ho capito che vuoi comprimere! :master:
Se un form contiene "ciao come va oggi", non puoi che passare "ciao come va oggi"![]()
Dovresti fare una funzione javascript lato client per comprimere le informazioni e una lato server per decomprimerle... la domanda è: ne vale la pena ? Anche perchè poi dubito che riuscirai ad utilizzare l'oggetto request.form ...
I don't wanna have to shout it out / I don't want my hair to fall out
I don't wanna be filled with doubt / I don't wanna be a good boy scout
I don't wanna have to learn to count / I don't wanna have the biggest amount
I don't wanna grow up
E' assolutamente possibile comprimere dei campi di testo e in alcuni casi serve veramente tanto.
Logicamente non potrai più gestire la request.form , ma dovrai crearti una funzione ben specifica.
Tuttavia ti posso assicurare che creare una funzione che comprime del testo è un qualcosa di allucinante da fare, non tanto per la complessità, ma per la logica di compressione.
Ciauu![]()
Matrix è ovunque, è intorno a noi, anche adesso nella stanza in cui siamo. È quello che vedi quando ti affacci alla finestra o quando accendi il televisore. L'avverti quando vai al lavoro, quando vai in chiesa, quando paghi le tasse. È il mondo che ti è stato messo dinanzi agli occhi, per nasconderti la verità.
Io e il mio collega abbiamo fatto una cosa malatissima che x poco non funziona!
Vi posto il codice, secondo me è una cosa utilissima perchè oltre a comprimere una qualsiasi stringa la cripta pure (E' UNA FIGATA)
Vi spiego come funziona e qual'è il problema.
Allora, il primo file è questo:
(a.asp) Quando faccio buf=funczippa(2,stringa) chiamo la funzione per comprimere la stringa e poi la metto nel campo nascosto della form
-------------------------------------------------------------------
<%
stringa = "PROVA PER VERIFICARE UNA STRINGA MOOOOLTO LUNGA E PER VEDERE QUANTI CARATTERI SERVONO PER CONTROBILANCIARE LA LUNGHEZZA DI UN FORM MULTIPART"
buf=funczippa(2,stringa)
%>
<form action="b.asp" method="post" enctype="text/plain">
<input type="hidden" name="jj" value="<%response.binarywrite buf%>">
<input type="submit">
</form>
--------------------------------------------------------------------
La funzione fa questo:
SE LE VIENE PASSATO 1 NEL PARAMETRO OPERAZIONE DECOMPRIME LA STRINGA
ALTRIMENTI LA COMPRIME.
X COMPRIMERLA NON FA NIENT'ALTRO KE LEGGERE OGNI CARATTERE DELLA STRINGA ORIGINALE E SOSTITUIRLO CON LA SEQUENZA DI BIT RELATIVA NELLA MATRICE INIZIALE.
ALLA FINE DI QUESTO CICLO HO UNA STRINGA DI 1 E 0 KE POI CONVERTO IN BYTE.
E' QUESTA STRINGA KE VIENE SPEDITA (I CARATTERI KIARAMENTE SONO ILLEGIBILI)
NELLA PAGINA B.ASP RICEVO LA STRINGA E RICHIAMO LA FUNZIONE FUNCZIPPA PASSANDOGLI COME OPERATORE 1 PER DECOMPRIMERE.
QUI NON FACCIO NINET'ALTRO KE LEGGERE OGNI CARATTERE BINARIO, TRASFORMARLO IN CARATTERE X RECUPERARE LA STRINGA COMPRESSA IN FORMATO LEGGIBILE.
PER ULTIMO LEGGO QUESTA STRINGA, LA CONVERTO IN UNA STRINGA DI 1 E 0 E CONTROLLO NELLA MATRICE X FARE LE SOSTITUZIONI CON LE LETTERE ORIGINALI.
E' UN PO' UN MACELLO MA SPERO DI ESSERMI UN PO' SPIEGATO.
IL PROBLEMA E' CHE FUNZIONA NON SEMPRE PERCHE' QUALCHE CARATTERE LO PERDE O LO SOSTIUTISCE IN QUALCHE MODO.
PROVATELA, SE RIUSCIAMO A FARLA FUNZIONARE SARA' UTILISSIMA!
CIAO A TUTTI!
FUNZIONE FUNCZIPPA:
E' una funzione abbastanza malata che comprime e decomprime in base al primo parametro che le viene passato.
function funczippa(operazione,stringa)
dim stringabinaria, stringanorm, stringabytes, byteletto, carattere
dim codici(44,2)
codici(1,1) = "¤": codici(1,2) = "0000"
codici(2,1) = "|": codici(2,2) = "0010"
codici(3,1) = "3": codici(3,2) = "0100"
codici(4,1) = "0": codici(4,2) = "0110"
codici(5,1) = "1": codici(5,2) = "00010"
codici(6,1) = "7": codici(6,2) = "00011"
codici(7,1) = "2": codici(7,2) = "00110"
codici(8,1) = "4": codici(8,2) = "00111"
codici(9,1) = "5": codici(9,2) = "01010"
codici(10,1) = "6": codici(10,2) = "01011"
codici(11,1) = "8": codici(11,2) = "01110"
codici(12,1) = "9": codici(12,2) = "01111"
codici(13,1) = "A": codici(13,2) = "11000"
codici(14,1) = "E": codici(14,2) = "100000"
codici(15,1) = "B": codici(15,2) = "100001"
codici(16,1) = "C": codici(16,2) = "100010"
codici(17,1) = "D": codici(17,2) = "100011"
codici(18,1) = "T": codici(18,2) = "100100"
codici(19,1) = "F": codici(19,2) = "100101"
codici(20,1) = "G": codici(20,2) = "100110"
codici(21,1) = "Q": codici(21,2) = "100111"
codici(22,1) = "R": codici(22,2) = "101000"
codici(23,1) = "L": codici(23,2) = "101001"
codici(24,1) = "M": codici(24,2) = "101010"
codici(25,1) = "N": codici(25,2) = "101011"
codici(26,1) = "O": codici(26,2) = "101100"
codici(27,1) = "P": codici(27,2) = "101101"
codici(28,1) = "S": codici(28,2) = "101110"
codici(29,1) = "U": codici(29,2) = "110010"
codici(30,1) = "V": codici(30,2) = "110011"
codici(31,1) = "W": codici(31,2) = "110100"
codici(32,1) = "X": codici(32,2) = "110101"
codici(33,1) = "Y": codici(33,2) = "110110"
codici(34,1) = "Z": codici(34,2) = "110111"
codici(35,1) = " ": codici(35,2) = "111000"
codici(36,1) = ".": codici(36,2) = "111001"
codici(37,1) = "/": codici(37,2) = "111010"
codici(38,1) = "+": codici(38,2) = "111011"
codici(39,1) = "*": codici(39,2) = "111100"
codici(40,1) = "-": codici(40,2) = "111101"
codici(41,1) = "H": codici(41,2) = "111110"
codici(42,1) = "I": codici(42,2) = "111111"
codici(43,1) = "K": codici(43,2) = "1011110"
codici(44,1) = "J": codici(44,2) = "1011111"
'----------------------- DECOMPRESSIONE -----------------------
if operazione = 1 then
For i = 1 To lenB(stringa)
stringabytes = stringabytes & chr(ascB(midB,stringa,i,1)))
Next
for i = 1 to len(stringabytes)
byteletto = asc(mid(stringabytes,i,1))
'-- LEGGO IL CODICE ASCII DI OGNI CARATTERE E LO CONVERTO IN BINARIO -'-- ALLA FINE AVRO' UNA STRINGONA BINARIA -----------
if byteletto < 128 then
stringabinaria = stringabinaria &"0"
else
stringabinaria = stringabinaria &"1"
byteletto = byteletto - 128
end if
if byteletto < 64 then
stringabinaria = stringabinaria &"0"
else
stringabinaria = stringabinaria &"1"
byteletto = byteletto - 64
end if
if byteletto < 32 then
stringabinaria = stringabinaria &"0"
else
stringabinaria = stringabinaria &"1"
byteletto = byteletto - 32
end if
if byteletto < 16 then
stringabinaria = stringabinaria &"0"
else
stringabinaria = stringabinaria &"1"
byteletto = byteletto - 16
end if
if byteletto < 8 then
stringabinaria = stringabinaria &"0"
else
stringabinaria = stringabinaria &"1"
byteletto = byteletto - 8
end if
if byteletto < 4 then
stringabinaria = stringabinaria &"0"
else
stringabinaria = stringabinaria &"1"
byteletto = byteletto - 4
end if
if byteletto < 2 then
stringabinaria = stringabinaria &"0"
else
stringabinaria = stringabinaria &"1"
byteletto = byteletto - 2
end if
if byteletto < 1 then
stringabinaria = stringabinaria &"0"
else
stringabinaria = stringabinaria &"1"
byteletto = byteletto - 1
end if
next
for i = 1 to len(stringabinaria)
for ii = 44 to 1 step -1
if mid(stringabinaria,i,len(codici(ii,2))) = codici(ii,2) then
stringanorm = stringanorm & codici(ii,1)
i = i + len(codici(ii,2)) - 1
exit for
end if
next
next
else
'---------------- QUI INVECE COMPRIMO LA STRINGA -------------------
stringanorm = cstr(stringa)
'- OGNI CARATTERE LO SOSTITUISCO CON LA PRIMA COLONNA DELLA MATRICE--
for i = 1 to len(stringanorm)
for ii = 1 to 44
if mid(stringanorm,i,1) = codici(ii,1) then
stringabinaria = stringabinaria & codici(ii,2)
exit for
end if
next
next
' -- AGGIUNGO GLI ZERI PER AVERE UNA STRINGA DI 1 E 0 MULTIPLA DI 8
for i = 1 to 8
if len(stringabinaria) mod 8 <> 0 then
stringabinaria=stringabinaria &"0"
end if
next
' CONVERTO 8 BIT ALLA VOLTA E MI COSTRUISCO LA STRINGA IN VERO BINARIO
for i = 1 to len(stringabinaria) step 8
car=ChrB(AscB(chr(128*cint(mid(stringabinaria,i,1) )+64*cint(mid(stringabinaria,i+1,1))+32*cint(mid(s tringabinaria,i+2,1))+16*cint(mid(stringabinaria,i +3,1))+8*cint(mid(stringabinaria,i+4,1))+4*cint(mi d(stringabinaria,i+5,1))+2*cint(mid(stringabinaria ,i+6,1))+1*cint(mid(stringabinaria,i+7,1)))))
stringabytes = stringabytes & car
Next
end if
if operazione = 1 then funczippa = stringanorm else funczippa = stringabytes
end function
%>
-----------------------------------------------------------------
Questo è l'ultimo file
(B.ASP)
<%
'CALCOLO QUANTI BYTE LA PAGINA HA RICEVUTO
ByteCount = Request.TotalBytes
'VETT_BYTE E' UN VETTORE DI BYTE KE CARICO COL METODO BINARYREAD
dim vett_byte
vett_byte = Request.BinaryRead(ByteCount)
Response.Write funczippa(1,vett_byte)
%>