Lahendatud: gzip baitide massiiv

Viimane uuendus: 09/11/2023

Muidugi, süveneme GZip-tihenduse maailma C#-s.

Mõiste „GZip” võib alguses tunduda pisut tehniline ja hirmutav, kuid selle kontseptsioon ja rakendamine on üsna lihtsad. Oma olemuselt on GZip failivorming, mida kasutatakse kõige sagedamini failide tihendamiseks ja lahtipakkimiseks. Veebiarenduse ja interneti kaudu andmeedastuse maailmas mängib GZip olulist rolli saadetavate andmete suuruse optimeerimisel, muutes seeläbi andmeedastusprotsessi kiiremaks ja tõhusamaks.

C# programmeerimiskeeles pakub nimeruum System.IO.Compression vajalikke meetodeid ja klasse GZip-tihenduse tõhusaks käsitlemiseks. Nüüd vaatame, kuidas see toimib – kuidas kasutada GZip-i baitimassiivi tihendamiseks ja lahtipakkimiseks.

Probleemi lahendus

Baitimassiivi pakkimiseks kasutame nimeruumides System.IO ja System.IO.Compression pakutavat klassi GZipStream ja MemoryStream.

[section=code lang=”C#”]

avalik staatiline bait[] GZipCompress(bait[] andmed)
{
using(MemoryStream ms = new MemoryStream())
using(GZipStream gzip = new GZipStream(ms, CompressionMode.Compress, true))
{
gzip.Write(andmed, 0, andmed.Length);
}
return ms.ToArray();
}

Ja tihendatud baitimassiivi lahtipakkimiseks GZipiga kasutame taas nii GZipStreami kui ka MemoryStreami klasse, kuid seekord pöördega.

avalik staatiline bait[] GZipDecompress(bait[] andmed)
{
using(MemoryStream väljund = new MemoryStream())
using(MemoryStreami sisend = uus MemoryStream(andmed))
using(GZipStream gzip = new GZipStream(sisend, CompressionMode.Decompress))
{
gzip.CopyTo(väljund);
}
tagastab väljundi.ToArray();
}

Kaks ülaltoodud koodilõiku näitavad lahendust baidimassiivi tihendamiseks ja lahtipakkimiseks, kasutades GZipi C#-s.

Koodeksi samm-sammult selgitus

Tihendusmeetodi puhul on sammud lihtsad:

  • Luuakse uus MemoryStreami eksemplar.
  • Luuakse uus GZipStreami eksemplar, mis kasutab baasvoona ülalnimetatud MemoryStreami. CompressionMode on seatud olekusse "Tihenda".
  • Baitiandmed kirjutatakse GZipStreami, mis need tihendab.
  • Lõpuks ekstraheeritakse tihendatud andmed MemoryStreamist selle ToArray() meetodi abil.

Dekompressioonimeetodi puhul :

  • Luuakse tihendatud andmeid sisaldav MemoryStreami väljundeksemplar ja MemoryStreami eksemplar.
  • GZipStreami eksemplar luuakse sisendi MemoryStream abil ja CompressionMode on seatud väärtusele „Dekompresseeri”.
  • Lõpuks kopeeritakse lahtipakkitud andmed väljundisse MemoryStream ja tagastatakse baitimassiivina.

GZipStream klass

Klass GZipStream, mis asub C# nimeruumis System.IO.Compression, on võimas tööriist andmete tihendamiseks ja lahtipakkimiseks. See pakub sisseehitatud valikuid vajaliku tihendustaseme otsustamiseks, alates tihendamise puudumisest kuni optimaalse tihendamiseni.

MemoryStream klass

System.IO nimeruumi all olev klass MemoryStream tähistab voogu mälus. Seda kasutatakse tavaliselt baitimassiividest lugemiseks või nendesse kirjutamiseks ilma tugisalvestita.

Need on vaid lühikesed ülevaated nendest teemadest. Nende teekide potentsiaali täielikuks mõistmiseks sukelduge põhjalikumalt ametlikku C# dokumentatsiooni ja katsetage erinevate stsenaariumide ja kasutusjuhtudega. Pidage meeles, et praktiline kogemus ja katsetamine on sageli parimad viisid programmeerimiskontseptsioonide õppimiseks ja valdamiseks.

Seonduvad postitused: