Lo so lo so...domanda impossibile...ma ci provo comunque
Per esigenze di banda, ho bisogno di comprimere un pacchetto inviato tra due dispositivi.
Ho trovato Online del codice per eseguire la compressione DMC che sembra funzionare correttamente...o quasi.
Le routines di compressione/decompressione, accettano in ingresso un array di byte e restituiscono in uscita un array di byte compresso/decompresso.
Il tutto sembra funzionare correttamente, solo che, a volte, quando decomprimo e trasformo l'array di byte in una stringa, questa, presenta 1 o 2 bytes in più del valore di "chr(0)".
Siccome il "testo" compresso/decompresso potrebbe non essere del semplice testo ma contenere anche parametri in Byte, temo che non sia possibile fregarsene ed eliminare tutti i caratteri chr(0) alla fine della stringa giusto? Come posso risolvere?
Le funzioni aggiungono dei byte a chr(0) perchè sono sbagliate oppure perchè è inevitabile durante le conversioni stringa/byte e viceversa?
Grazie
Ecco il codice di esempio (questo è in vb6 ma si comporta allo stesso modo in vb.net)
Modulo compressione/decompressione
Codice Form:
Private Sub Command1_Click()
Dim OldC() As Byte
ReDim OldC(28) As Byte
OldC(0) = 6
OldC(1) = 0
OldC(2) = 0
OldC(3) = 0
OldC(4) = 0
OldC(5) = 0
OldC(6) = 0
OldC(7) = 0
OldC(8) = 0
OldC(9) = 0
OldC(10) = 0
OldC(11) = 0
OldC(12) = 48
OldC(13) = 48
OldC(14) = 48
OldC(15) = 48
OldC(16) = 49
OldC(17) = 49
OldC(18) = 49
OldC(19) = 49
OldC(20) = 59
OldC(21) = 48
OldC(22) = 49
OldC(23) = 49
OldC(24) = 56
OldC(25) = 48
OldC(26) = 51
OldC(27) = 48
OldC(28) = 48
Dim OldS As String
OldS = StrConv(OldC, vbUnicode)
Module1.Compress_ArithMetic_DMC OldC
Dim NewC() As Byte
NewC = OldC
Module1.DeCompress_ArithMetic_DMC NewC
Dim NewS As String
NewS = StrConv(NewC, vbUnicode)
End Sub