2010-12-30 20 views

Antwort

2

Ich bezweifle es. Zuerst legt qCompress() die Datengröße in die ersten 4 Bytes, was mit zlib-Standards nichts zu tun hat. Vielleicht möchten Sie diese Bytes überspringen, aber das ist ein schmutziger Hack. Zweitens klingt GzipStream wie das Gzip-Format (zlib-Format zum Komprimieren von Dateien), wenn qCompress() den Aufruf compress2() verwendet, der ein anderes zlib-Format verwendet, das für die Komprimierung im Arbeitsspeicher gedacht ist.

qCompress() und qUncompress() sind entworfen, um miteinander und nicht mehr zu arbeiten. Wenn Sie Kompatibilität mit anderem Code benötigen, verwenden Sie zlib direkt, es ist einfach und portabel. Tatsächlich machen wir es in unserem Unternehmen - der Server verwendet Qt, die Clients verwenden .Net und Java. Funktioniert perfekt.

+0

Welche Implementierungen von zlib für .NET und Java würden Sie empfehlen? Ich kenne ZLIB.NET (http://www.componentace.com/zlib_.NET.htm), aber was ist mit Java? Was sind die Standard-Bibliotheken für die Unterstützung von zlib in .NET und Java? –

+0

Ich benutze [JZlib] (http://www.jcraft.com/jzlib/) für Java, funktioniert gut, nur die Flush-Unterstützung ist etwas zurückgeblieben - Sie müssen etwas schreiben, um zu leeren (und ein Byte-Array von null Größe hat gewonnen ' t t wie schreiben es tut nichts). Ich weiß nichts über .Net, da ich kein .Net-Entwickler bin. –

+0

Als Randbemerkung: Ich habe festgestellt, dass ZLIB.NET mit qCompress/qUncompress kompatibel ist. .NET DeflateStream und GzipStream sind nicht. Stellen Sie sicher, dass die ersten 4 Byte angehängt und entfernt werden, die die unkomprimierte Länge beim Komprimieren und Dekomprimieren angeben. –