2017-10-27 3 views
1

End Ziel aufblasen: ich eine RXDATA Datei lesen möchten, die mit Zlib::Deflate.deflate in Ruby angesichts der Zustand des Programms komprimiert wird. Ich kann Zlib::Inflate.inflate in Ruby nicht verwenden. Aus diesem Grund schaute ich auf C#.Rubin wie C# Zlib String

Lassen Sie uns sagen, ich habe diese komprimierte Zeichenfolge in Ruby:

X\x85\xCBH\xAD\x04\x00\xF0\x15\xD6\x88

Wenn ich Zlib::Inflate.inflate auf, dass in Ruby laufen waren, ist es mir eine Zeichenfolge geben würde, die hey enthält.

Nun, wenn ich diese komprimierte Zeichenfolge in C# habe, gibt es eine einfache Möglichkeit, es in eine Zeichenfolge von hey aufzublasen?

Ich habe schon Ionic.Zlib angesehen, aber ich konnte nicht viel weiser davon bekommen.


Ich weiß nicht viel/nichts über Kompression und dergleichen.

+0

Wahrscheinlich möchten Sie 'DeflateStream' verwenden. Ich würde es ausarbeiten, aber ich bin gerade auf Handy –

+0

Würdest du wissen, welche Methoden zu verwenden? Ich habe schon ein paar Sachen mit DeflateStream ausprobiert, hatte aber nicht viel Glück. bearbeiten: Ah, Gotcha. – M3rein

+0

Ich fürchte, ich bin selbst kein Experte in der Komprimierung, es könnte verschiedene Kopfdaten oder etwas geben, das Rubys ZLib und C# vergleicht. Beachten Sie, dass C# nur ZLib verwendet, wenn Sie auf .NET 4.5 oder höher abzielen, bevor es einen anderen Algorithmus verwendet. Lass mich versuchen, wenn ich deine Saite dekomprimieren kann. –

Antwort

1

Sind Sie sicher, dass das in Ruby funktioniert? Ich bekomme "Zlib :: DataError: falsche Datenprüfung" in Ruby für diese Bytes, das ist richtig! Dieser zlib-Stream hat einen falschen Adler-32-Prüfwert für die Daten "hey".

+0

Das muss der Grund sein, warum meine Ausgabe in C# etwas anders war! :-) –

+0

sollte es sein. 'Zlib :: Deflate.deflate ('hey')' gibt 'X \ x85 \ xCBH \ xAD \ x04 \ x00 \ xF0 \ x15 \ xD6 \ x88' zurück. – M3rein

+0

'irb (main): 004: 0> Zlib :: Deflate.deflate ('hey') =>" x \ x9C \ xCBH \ xAD \ x04 \ x00 \ x02 ~ \ x01G "' –