Új hozzászólás Aktív témák

  • dqdb

    nagyúr

    válasz Keem1 #8474 üzenetére

    Azért, mert a GZDecompress által átugrott első két byte hiányzik a GZCompress által létrehozott adatból.

    Streamek és más IDisposable objektumok esetében mindig használd a using kulcsszót.

    public static string GZDecompress(string compressedString)
    {
    try
    {
    using (var memStream = new MemoryStream(Convert.FromBase64String(compressedString)))
    {
    memStream.ReadByte();
    memStream.ReadByte();

    using (var deflate = new DeflateStream(memStream, CompressionMode.Decompress))
    using (var reader = new StreamReader(deflate, System.Text.Encoding.UTF8))
    {
    var decompressedString = reader.ReadToEnd();
    return decompressedString;
    }
    }
    }
    catch (Exception)
    {
    return String.Empty;
    }
    }

    public static string GZCompress(string decompressedString)
    {
    try
    {
    using (var memStream = new MemoryStream())
    {
    memStream.WriteByte(0x78);
    memStream.WriteByte(0x9c);

    var input = Encoding.UTF8.GetBytes(decompressedString);
    using (var deflate = new DeflateStream(memStream, CompressionMode.Compress))
    {
    deflate.Write(input, 0, input.Length);
    }

    return Convert.ToBase64String(memStream.ToArray());
    }
    }
    catch
    {
    return String.Empty;
    }
    }

    Azt nem egészen értem, hogy miért nem HTTP szinten van megvalósítva a tömörítés, miért kell a kliens logikáját ezzel terhelni.

Új hozzászólás Aktív témák

Hirdetés