Çözüldü: gzip bayt dizisi

Son Güncelleme: 09/11/2023

Elbette, C#'ta GZip sıkıştırma dünyasına dalalım.

'GZip' terimi ilk başta biraz teknik ve göz korkutucu görünebilir, ancak konsepti ve uygulaması oldukça basittir. Onun çekirdeğinde, GZip dosya sıkıştırma ve açma için en yaygın olarak kullanılan bir dosya formatıdır. Web geliştirme ve İnternet üzerinden veri aktarımı dünyasında GZip, gönderilen verinin boyutunun optimize edilmesinde önemli bir rol oynar, böylece veri aktarım sürecini daha hızlı ve daha verimli hale getirir.

C# programlama dilinde, Sistem.IO.Sıkıştırma ad alanı, GZip sıkıştırmasını verimli bir şekilde işlemek için gerekli yöntemleri ve sınıfları sağlar. Şimdi konuya dalalım Nasıl bir bayt dizisini sıkıştırmak ve açmak için GZip'i kullanmak.

Problemin çözümü

Bir bayt dizisini sıkıştırmak için sırasıyla System.IO ve System.IO.Compression ad alanlarında sağlanan GZipStream sınıfını ve MemoryStream sınıfını kullanacağız.

[bölüm=kod dili=”C#”]

genel statik bayt[] GZipCompress(bayt[] veri)
{
kullanma(MemoryStream ms = new MemoryStream())
kullanarak(GZipStream gzip = new GZipStream(ms, CompressionMode.Compress, true))
{
gzip.Write(veri, 0, veri.Uzunluk);
}
ms.ToArray() döndür;
}

Sıkıştırılmış bir bayt dizisinin sıkıştırmasını GZip ile açmak için yine hem GZipStream hem de MemoryStream sınıflarını kullanacağız, ancak bu sefer bir değişiklikle.

genel statik bayt[] GZipDecompress(bayt[] veri)
{
kullanma(MemoryStream çıkışı = yeni MemoryStream())
kullanma(MemoryStream girişi = new MemoryStream(veri))
kullanarak(GZipStream gzip = new GZipStream(input, CompressionMode.Decompress))
{
gzip.CopyTo(çıkış);
}
çıktıyı döndür.ToArray();
}

Yukarıdaki iki kod parçacığı, C#'ta GZip kullanarak bir bayt dizisini sıkıştırmak ve sıkıştırmasını açmak için bir çözüm göstermektedir.

Kodun Adım Adım Açıklaması

Sıkıştırma yönteminde, adımlar basittir:

  • Yeni bir MemoryStream örneği oluşturulur.
  • Yukarıda belirtilen MemoryStream'i temel akışı olarak kullanan yeni bir GZipStream örneği oluşturulur. CompressionMode 'Compress' olarak ayarlanmıştır.
  • Bayt verileri, onu sıkıştıran GZipStream'e yazılır.
  • Son olarak sıkıştırılmış veriler, ToArray() yöntemi kullanılarak MemoryStream'den çıkarılır.

Dekompresyon yönteminde:

  • Bir çıkış MemoryStream örneği ve sıkıştırılmış verileri içeren bir MemoryStream örneği oluşturulur.
  • MemoryStream girişi kullanılarak bir GZipStream örneği oluşturulur ve CompressionMode 'Decompress' olarak ayarlanır.
  • Son olarak sıkıştırılmış veriler MemoryStream çıktısına kopyalanır ve bir bayt dizisi olarak döndürülür.

GZipStream Sınıfı

C#'taki System.IO.Compression ad alanı içinde yer alan GZipStream sınıfı, verileri sıkıştırmak ve sıkıştırmayı açmak için güçlü bir araçtır. İhtiyacınız olan sıkıştırma düzeyine karar vermeniz için, sıkıştırma yoktan optimum sıkıştırmaya kadar dahili seçenekler sunar.

MemoryStream Sınıfı

System.IO ad alanı altındaki MemoryStream sınıfı, bellekteki bir akışı temsil eder. Genellikle bir yedekleme deposuna ihtiyaç duymadan bayt dizilerinden okumak veya bu dizilere yazmak için kullanılır.

Bunlar sadece bu konuların kısa özetleridir. Bu kütüphanelerin potansiyelini tam olarak kavramak için resmi kaynaklara daha derinlemesine dalın. C# belgeleme ve farklı senaryolar ve kullanım durumlarıyla denemeler. Uygulamalı deneyim ve denemelerin genellikle programlama kavramlarını öğrenmenin ve uzmanlaşmanın en iyi yolu olduğunu unutmayın.

İlgili Mesajlar: