2010-04-26 29 views
5

.NET'te System.IO.Compression.DeflateStream kullanılarak sıkıştırılan ilk birkaç bayt veriye güvenebilir miyim? 237, 189, 7, 96, 28, 73, 150, 37, 38, 47, ... Ben bu varsayıyorumBayt dizisinin önceden sıkıştırılmış olup olmadığını nasıl anlarım?

çeşit:

Bu bayt

daima 1 byte gibi görünüyor üstbilgi, bu üstbilginin sabit olduğunu ve değişmeyeceğini varsayalım.

Bu konuda daha fazla bilgiye sahip olan var mı?

Arkaplan bilgisi (Umarım bu bilgiler olduğunu bilmek istiyorum sebebi ...)

Ben küçük yapılıyor yapabileceğini bir veritabanı tablodaki verilerin bir yük var. Verileri sıkıştırmaya ve mevcut verileri sıkıştırmaya zahmet etmeyeceğime karar verdim. Veri, .NET koduma girdiğinde veriler bir String'dir.

Dizenin ilk birkaç baytına bakıp sıkıştırılmış olup olmadığına bakın, eğer sıkıştırılmışsa, sıkıştırmak zorundayım.

Aslında dizgeyi baytlara çevirebileceğimi ve yalnızca verileri sıkıştırmayı deneyebileceğimi düşünüyordum. Sonra bir istisna olursa, sadece sıkıştırılmadığını varsayabilirdim. Ancak, başlık baytlarının kontrol edilmesinin bana daha iyi bir performans vereceğini düşünüyorum.

Çok teşekkürler, Mike G

cevap

1

(bu yerde belgelenmiştir sürece), güvenli olması ön kendi sihirli başlık sopa. Bir GUID bunun için iyi bir seçimdir.

+0

Teşekkürler, bunun için iyi bir yanal düşünme düşüneceğim! (henüz NET 4 kullanmıyorum, diğer cevap benim için uygun değil) – MikeG

0

Bunu önlemek için .NET 4.0'da yapılan GZipStream için bazı geliştirmeler yapılmıştır. System.IO.Compression içinde

sıkıştırma algoritmaları .NET 4. DeflateStream ve GZipStream artık şişirmek zaten sıkıştırılmış veriyi iyileştirilmiştir: Belki için .NET için göç bir seçenektir. source

İlgili konular