Kuxazululiwe: gzip byte array

Isibuyekezo sokugcina: 09/11/2023

Impela, ake singene sijule emhlabeni wokuminyanisa kwe-GZip ku-C#.

Igama elithi 'GZip' lingase libonakale liwubuchwepheshe futhi lethusa ekuqaleni, kodwa umqondo walo nokusebenzisa kulula. Emqondweni wayo, I-GZip ifomethi yefayela evame ukusetshenziselwa ukucindezelwa kwefayela nokuwohloka. Emhlabeni wokuthuthukiswa kwewebhu nokudluliswa kwedatha nge-inthanethi, i-GZip idlala indima ebalulekile ekuthuthukiseni usayizi wedatha ethunyelwayo, ngaleyo ndlela yenze inqubo yokudlulisa idatha isheshe futhi isebenze kahle kakhulu.

Ngolimi lokuhlela lwe-C#, i Isistimu.IO.Compression i-namespace ihlinzeka ngezindlela ezidingekayo namakilasi ukuze uphathe kahle ukucindezelwa kwe-GZip. Manje, ake sicwilise ku- Kanjani yayo - kusetshenziswa i-GZip ukuze ucindezele futhi unciphise ukuhlelwa kwebhayithi.

Isixazululo Senkinga

Ukuze uziphe uhlu lwebhayithi, sizobe sisebenzisa isigaba se-GZipStream kanye nekilasi le-MemoryStream elinikezwe ku-System.IO kanye nezikhala zamagama ze-System.IO.Compression, ngokulandelanayo.

[isigaba=ikhodi ulimi=”C#”]

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

Futhi ekunciphiseni uhlu lwebhayithi ecindezelwe nge-GZip, sizosebenzisa zombili izigaba ze-GZipStream ne-MemoryStream kodwa kulokhu, ngokusonta.

public static byte[] GZipDecompress(byte[] idatha)
{
usebenzisa(Okukhipha iMemoryStream = iMemoryStream entsha())
usebenzisa(Okufaka iMemoryStream = iMemoryStream entsha(idatha))
usebenzisa(GZipStream gzip = new GZipStream(input, CompressionMode.Decompress))
{
gzip.CopyTo(output);
}
buyisela okukhiphayo.ToArray();
}

Amazwibela ekhodi amabili angenhla abonisa isixazululo sokucindezela kanye nokucindezela uhlu lwebhayithi usebenzisa i-GZip ku-C#.

Incazelo yesinyathelo ngesinyathelo yeKhodi

Ngendlela yokucindezela, izinyathelo ziqondile:

  • Kudalwe isenzakalo esisha se-MemoryStream.
  • Kudalwe isenzakalo esisha se-GZipStream esebenzisa i-MemoryStream eshiwo ngenhla njengokusakaza kwayo okuyisisekelo. I-CompressionMode isethelwe ku-'Compress'.
  • Idatha ye-byte ibhalwe ku-GZipStream eyiminyanisa.
  • Ekugcineni, idatha ecindezelwe ikhishwa ku-MemoryStream kusetshenziswa indlela yayo ye-ToArray().

Ngendlela ye-decompression:

  • Isenzakalo se-MemoryStream esiphumayo kanye nesenzakalo se-MemoryStream esiqukethe idatha ecindezelweyo siyadalwa.
  • Isibonelo se-GZipStream senziwa kusetshenziswa okokufaka kwe-MemoryStream futhi i-CompressionMode isethwe ukuze ithi 'Decompress'.
  • Ekugcineni, idatha encishisiwe ikopishelwa kokuphumayo kwe-MemoryStream futhi ibuyiselwa njenge-byte array.

Ikilasi le-GZipStream

Ikilasi le-GZipStream, eligcinwe ngaphakathi kwe-System.IO.Compression namespace ku-C#, iyithuluzi elinamandla lokucindezela nokudiliza idatha. Inikeza izinketho ezakhelwe ngaphakathi zokunquma izinga lokucindezelwa olidingayo, kusukela ekungacindezelini kuya kokucindezelwa okufanele.

I-MemoryStream Class

Ikilasi le-MemoryStream, ngaphansi kwe-System.IO namespace, limele ukusakaza kumemori. Ivamise ukusetshenziselwa ukufunda kusuka noma ukubhala kuya kuma-byte array ngaphandle kwesidingo sesitolo esisekelayo.

Lezi kumane kuwukubukezwa okufushane kwalezi zihloko. Ukuze ubambe ngokugcwele amandla ale mitapo yolwazi, ngena ujule esisemthethweni C# imibhalo kanye nokuhlola ngezimo ezahlukene kanye nezimo zokusebenzisa. Khumbula, ulwazi olwenziwayo kanye nokuhlola kuvame ukuba yizindlela ezingcono kakhulu zokufunda nokuphatha imiqondo yokuhlela.

Okuthunyelwe okuhlobene:

Shiya amazwana