Es gibt einen Beitrag hier Compress and decompress string in c# zum Komprimieren von Zeichenfolge in C#.GZipStream macht meinen Text größer als das Original
Ich habe den gleichen Code für mich implementieren, aber die zurückgegebene Text ist fast doppelt so meins: O
ich es mit Größe auf einem json versucht haben wie folgt aus:
{ "G": "82f88ff5-4143-46ef-86cc-a19910f4a6b5", "U": "df39e3c7-ffd3-4829-a9cd-27bfcbd4403a"}
Das Ergebnis ist
H4sIAAAAAAAEAC2NUQ6DIBQE5yx8l0QFqfQCnqAHqKCXaHr3jsaQ3TyYfcuXwKpeamHi0Bf9YCaSGVW6psLua5QWmifykVbPyCDJ3gube4GHet + tXZZM7Xrj6d7Z3u/W8896dVVpd5rMbCaa3k1k25M88OMPcjDew64AAAA =
Ich habe Unicode in ASCII, aber das Ergebnis ist immer noch zu groß geändert (128)
H4sIAAAAAAAEAA3KyxGAMAgFwF44y0w + JAEbsAILICSvCcfedc/70EUnaYEq0FiyVJa + wdoj2LNZThDvs9FB918Xqu0ag4H1Vy3GbrG4jImYSyRVp/cDp8EZE1cAAAA =
public static string Compress(this string s)
{
var bytes = Encoding.ASCII.GetBytes(s);
using (var msi = new MemoryStream(bytes))
using (var mso = new MemoryStream())
{
using (var gs = new GZipStream(mso, CompressionMode.Compress))
{
msi.CopyTo(gs);
}
return Convert.ToBase64String(mso.ToArray());
}
}
Haben Sie die Anzahl der Bytes vor dem Konvertieren in Base64 verglichen? Wenn ich mich richtig erinnere Base64 konvertiert jeden 6-Bit-Chunk zu einem Zeichen https://en.wikipedia.org/wiki/Base64 – KMoussa
@KMoussa danke für die Antwort. Ich habe meinen Code hinzugefügt –
Ja, ich benutze ToBase64, aber ich habe auch getestet System.Text.Encoding.ASCII.GetString (byteArray); –