Dynamic Markov Compression

mercoledì 16 maggio 2012 - 17.16
Tag Elenco Tags  VB.NET  |  .NET 2.0  |  Visual Studio 2005

mmjc23 Profilo | Newbie

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
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

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

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5