Isonjululwe: gzip byte uluhlu

Uhlaziyo lokugqibela: 09/11/2023

Ngokuqinisekileyo, masijonge kwihlabathi loxinzelelo lwe-GZip kwi-C#.

Igama elithi 'GZip' lisenokubonakala libuchwephesha kwaye loyikeka ekuqaleni, kodwa umbono walo kunye nokuphunyezwa kwalo kulula kakhulu. Embindini wayo, GZip yifomati yefayile eqhele ukusetyenziselwa ucinezelo lwefayile kunye noxinzelelo. Kwilizwe lophuhliso lwewebhu kunye nokuhanjiswa kwedatha kwi-Intanethi, i-GZip idlala indima ebalulekileyo ekwandiseni ubungakanani bedatha ethunyelwayo, ngaloo ndlela yenza inkqubo yothumelo lwedatha ikhawuleze kwaye isebenze ngakumbi.

Kulwimi lwenkqubo ye-C#, i System.IO.Compression indawo yegama ibonelela ngeendlela ezifunekayo kunye neeklasi zokuphatha ngokufanelekileyo ucinezelo lwe-GZip. Ngoku, masingene kwi njani ngayo – usebenzisa i-GZip ukucinezela kunye nokuthomalalisa uluhlu lwe-byte.

Isisombululo kwiNgxaki

Ukufakela i-byte uluhlu, siza kusebenzisa iklasi ye-GZipStream kunye neklasi ye-MemoryStream enikwe kwi-System.IO kunye ne-System.IO.Compression namespaces, ngokulandelelanayo.

[icandelo=ikhowudi yolwimi=”C#”]

public static byte[] GZipCompress(byte[] data)
{
usebenzisa(MemoryStream ms = iMemoryStream entsha())
usebenzisa(GZipStream gzip = new GZipStream(ms, CompressionMode.Compress, true))
{
gzip.Bhala(idatha, 0, data.Ubude);
}
buyisela ms.ToArray();
}

Kwaye ukuthoba i-byte ecinezelweyo kunye ne-GZip, siza kusebenzisa zombini iiklasi ze-GZipStream kunye ne-MemoryStream kodwa ngeli xesha, ngokujija.

public static byte[] GZipDecompress(byte[] data)
{
usebenzisa(imveliso yeMemoryStream = iMemoryStream entsha ())
usebenzisa(igalelo leMemoryStream = iMemoryStream entsha(idatha))
usebenzisa(GZipStream gzip = new GZipStream(input, CompressionMode.Decompress))
{
gzip.CopyTo(imveliso);
}
buyisela imveliso.ToArray();
}

Iikhowudi ezimbini eziziqwengana ezingasentla zibonisa isisombululo sokucinezela kunye nokuthotywa kwe-byte uluhlu usebenzisa i-GZip kwi-C #.

Inkcazo ngamanyathelo ngamanyathelo yeKhowudi

Kwindlela yoxinzelelo, amanyathelo athe ngqo:

  • Umzekelo omtsha weMemoryStream uyadalwa.
  • Umzekelo omtsha we-GZipStream wenziwa osebenzisa iMemoryStream ekhankanywe ngasentla njengomjelo wayo osisiseko. ICompressionMode isetelwe ukuba 'Compress'.
  • Idatha ye-byte ibhalwe kwi-GZipStream eyicinezela.
  • Ekugqibeleni, idatha ecinezelweyo ikhutshwe kwiMemoryStream isebenzisa indlela yayo ye-ToArray ().

Kwindlela yokunciphisa:

  • Umzekelo wokuphuma kweMemoryStream kunye nomzekelo weMemoryStream oqulethe idatha ecinezelweyo yenziwe.
  • Umzekelo weGZipStream wenziwa kusetyenziswa igalelo leMemoryStream kwaye iCompressionMode isetelwe ku'Decompress'.
  • Okokugqibela, idatha ethotyiweyo ikhutshelwa kwimveliso yeMemoryStream kwaye ibuyiswa njenge-byte array.

IKlasi yeGZipStream

Iklasi ye-GZipStream, egcinwe ngaphakathi kwe-System.IO.Compression namespace kwi-C #, sisixhobo esinamandla sokuxinzelela kunye nokunciphisa idatha. Inika iinketho ezakhelwe ngaphakathi zokuthatha isigqibo ngenqanaba loxinzelelo olufunayo, ukusukela ekungacinezelikiyo ukuya kuxinzelelo olulolona lufanelekileyo.

Iklasi yeMemoryStream

Iklasi ye-MemoryStream, phantsi kwe-System.IO namespace, imele umlambo kwimemori. Iqhele ukusetyenziselwa ukufunda ukusuka okanye ukubhala kwi-byte arrays ngaphandle kwesidingo sevenkile exhasayo.

Ezi zizishwankathelo nje ezimfutshane zezi zihloko. Ukuqonda ngokupheleleyo amandla ala mathala, ungene nzulu kwigosa C# uxwebhu kunye nokulinga ngeemeko ezahlukeneyo kunye neemeko zokusetyenziswa. Khumbula, amava okusebenza kunye nokulinga kudla ngokuba zezona ndlela zilungileyo zokufunda kunye neekhonsepthi zokucwangcisa.

Izithuba ezihambelanayo: