Unterschiedliche GZIP-Kompression in C# und PHP
-
Ja, schonwieder ein "Unterschied in C# und PHP"-Thema...
Ich habe eine C#-Methode zum gzip-komprimieren von Strings.
public static string Compress(string text) { byte[] buffer = Encoding.UTF8.GetBytes(text); MemoryStream ms = new MemoryStream(); using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress, true)) { zip.Write(buffer, 0, buffer.Length); } ms.Position = 0; MemoryStream outStream = new MemoryStream(); byte[] compressed = new byte[ms.Length]; ms.Read(compressed, 0, compressed.Length); byte[] gzBuffer = new byte[compressed.Length + 4]; System.Buffer.BlockCopy(compressed, 0, gzBuffer, 4, compressed.Length); System.Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gzBuffer, 0, 4); return Convert.ToBase64String(gzBuffer); }
Wenn ich das Wort "test" komprimiere, kommt folgendes raus:
BAAAAB+LCAAAAAAABADtvQdgHEmWJSYvbcp7f0r1StfgdKEIgGATJNiQQBDswYjN5pLsHWlHIymrKoHKZVZlXWYWQMztnbz33nvvvffee++997o7nU4n99//P1xmZAFs9s5K2smeIYCqyB8/fnwfPyLavGn/Hwx+f9gEAAAAIn PHP habe ich zwei Funktionen getestet.
echo base64_encode(gzencode("test", 9)); echo "<br>"; echo base64_encode(gzcompress("test", 9));
Die Ergebnisse:
H4sIAAAAAAAAAytJLS4BAAx+f9gEAAAA
eNorSS0uAQAEXQHBErstmal nicht wundern, bei kleinen Strings bewirkt die gzip-Kompression genau das Gegenteil. Es wird nicht komprimiert sondern sogar aufgebläht.
Mir fällt aber auf, dass man bei PHP den Kompressiongrad festlegen kann (0-9). In C# hab ich da keine Eigenschaft der GZipStream-Klasse gefunden.
Mir das Ergebnis der C#-Funktion aber extrem lang vor. Steckt da irgendwo ein Fehler im Code?
-
C# ist, wie alle anderen MS Produkte, totaler Schrott. Schlechte Qualität. Ab in die Tonne damit. Nimm Linux.
-
sdfsdfd schrieb:
C# ist, wie alle anderen MS Produkte, totaler Schrott. Schlechte Qualität. Ab in die Tonne damit. Nimm Linux.
unqualifizierter müll.
wie ich meinem anderen thread (aes in php und c# liefern verschiedene ergebnisse) zu sehen, lag es an PHP. php benutzt irgendein padding-scheiß, der nicht dem standard entspricht.
-
sdfsdfd schrieb:
C# ist, wie alle anderen MS Produkte, totaler Schrott. Schlechte Qualität. Ab in die Tonne damit. Nimm Linux.
heise-Troll