Vyřešeno: gzip byte array

Jistě, pojďme se ponořit do světa komprese GZip v C#.

Termín 'GZip' se může na první pohled zdát trochu technický a skličující, ale jeho koncepce a implementace jsou poměrně jednoduché. v jádru GZip je formát souboru, který se nejčastěji používá pro kompresi a dekompresi souborů. Ve světě vývoje webu a přenosu dat přes internet hraje GZip významnou roli při optimalizaci velikosti odesílaných dat, a tím zrychluje a zefektivňuje proces přenosu dat.

V programovacím jazyce C# je System.IO.Compression jmenný prostor poskytuje požadované metody a třídy pro efektivní zpracování komprese GZip. Nyní se pojďme ponořit do jak z toho – pomocí GZip pro kompresi a dekompresi bajtového pole.

Řešení Problému

K zazipování bajtového pole použijeme třídu GZipStream a třídu MemoryStream poskytnutou v jmenných prostorech System.IO a System.IO.Compression.

[section=code lang=”C#”]

veřejný statický byte[] GZipCompress(byte[] data)
{
using(MemoryStream ms = new MemoryStream())
using(GZipStream gzip = new GZipStream(ms, CompressionMode.Compress, true))
{
gzip.Write(data, 0, data.Length);
}
return ms.ToArray();
}

A pro dekomprimaci komprimovaného bajtového pole pomocí GZip znovu použijeme třídy GZipStream i MemoryStream, ale tentokrát s obratem.

public static byte[] GZipDecompress(byte[] data)
{
using(MemoryStream output = new MemoryStream())
using(MemoryStream input = new MemoryStream(data))
using(GZipStream gzip = new GZipStream(vstup, CompressionMode.Decompress))
{
gzip.CopyTo(výstup);
}
vrátit výstup.ToArray();
}

Dva úryvky kódu výše demonstrují řešení pro kompresi a dekompresi bajtového pole pomocí GZip v C#.

Vysvětlení kodexu krok za krokem

V kompresní metodě, kroky jsou jednoduché:

  • Vytvoří se nová instance MemoryStream.
  • Je vytvořena nová instance GZipStream, která jako základní stream používá výše uvedený MemoryStream. CompressionMode je nastaven na 'Compress'.
  • Bajtová data jsou zapsána do GZipStream, který je komprimuje.
  • Nakonec jsou komprimovaná data extrahována z MemoryStreamu pomocí jeho metody ToArray().

V dekompresní metodě:

  • Vytvoří se výstupní instance MemoryStream a instance MemoryStream obsahující komprimovaná data.
  • Instance GZipStream je vytvořena pomocí vstupu MemoryStream a CompressionMode je nastaven na 'Decompress'.
  • Nakonec jsou dekomprimovaná data zkopírována do výstupního MemoryStream a vrácena jako bajtové pole.

Třída GZipStream

Třída GZipStream, umístěná v jmenném prostoru System.IO.Compression v C#, je výkonný nástroj pro kompresi a dekompresi dat. Nabízí vestavěné možnosti pro rozhodování o požadované úrovni komprese, od žádné komprese po optimální kompresi.

Třída MemoryStream

Třída MemoryStream pod jmenným prostorem System.IO představuje proud v paměti. Běžně se používá pro čtení nebo zápis do bajtových polí bez potřeby záložního úložiště.

Toto jsou jen stručné přehledy těchto témat. Abyste plně pochopili potenciál těchto knihoven, ponořte se hlouběji do oficiálních C# dokumentaci a experimentujte s různými scénáři a případy použití. Pamatujte, že praktické zkušenosti a experimentování jsou často nejlepšími způsoby, jak se naučit a zvládnout programovací koncepty.

Související příspěvky:

Zanechat komentář