Komprimiere den Gzip-String in Ruby

Wie schreibe ich eine Methode zum Komprimieren eines Gzip-Strings, der keine Header-Datei enthält, und lasse ihn genau so komprimieren, wie er war, bevor ich ihn dekomprimiert habe? Die ursprüngliche Komprimierung erfolgt in C #, und ich fülle Ruby mit der folgenden Methode auf:

EDIT: im Grunde genommenIch hätte gerne die passende Deflate-Methode dazu aufblasen:

def inflate(string)
    zstream = Zlib::Inflate.new(-Zlib::MAX_WBITS)
    buf = zstream.inflate(string)
    zstream.finish
    zstream.close
    buf
end

Vor dem Dekomprimieren lautet die Zeichenfolge:

"5\x891\n\xC30\x10\x04{\xBDb\xEB\xE0F&\x81\xA4\xCA3\xDC\xA81\xD2\x1A]\xA1\x13\xB1.\x100\xFEF\xDE\e\x19\x9Cb\x99Yf\xCA\xB3A\x1A,\x13\xB1\x96R\x15I\x96\x85+5\x12\xA2=\xF4:\xAFb\xB9\xD0$\xA2\xF1\xF5>\xDA\xD3\xB9\x9A\xA8f\xFC\xD8\xE6\xFD\x00\x7F\xEB{\f!Uk{\xCF,\x91\xDC\x1C\x10J\xC4\xF7z\xCA\xE8p9\xF8\xFF\xF7\x93\xDEw\xD9\x7F"

Und nach dem Dekomprimieren mit inflate ist es:

    "What is the common difference in this arithmetic sequence?\n\n\\indenttext{11, 15, 19,\\dots}\n\n\\emcee{\n  \\mc \x964\n  \\mc 2\n *\\mc 4\n  \\mc 8\n  \\mc 11\n  }"

Ich habe versucht, mehrere Deflate-Methoden zu erstellen, aber keine, die es wieder auf das Original bringen kann. Danke für Ihre Hilfe!

BEARBEITEN: Die ursprüngliche Komprimierung wurde in .NET 2.0 folgendermaßen durchgeführt

byte[] compressedStringBytes = CompressGzipString(String);

und CompressGzipString macht:

MemoryStream compressed = new MemoryStream();
DeflaterOutputStream zosCompressed = new DeflaterOutputStream(compressed, new Deflater(Deflater.BEST_COMPRESSION, true));
zosCompressed.Write(data, 0, data.Length);

Wenn es nicht möglich ist, es auf das genaue Original zu bringen, was wäre die standardisierteste Komprimierung, mit der ich allgemein meine und die auf die gleiche Weise wie das Original dekomprimiert werden könnte?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage