sta*_*ser 3 c# compression gzipstream c#-4.0
有没有办法知道GzipStream.net类是否压缩了(或没有)byte [] ?
编辑: 只想知道byte []数组是否已被压缩(因为我将始终使用GzipStream进行压缩和解压缩)
甲GZipStream是DeflateStream与附加首部和尾部.
格式在RFC 1952中指定.
.NET 4.0 GZipStream类将以下字节写为标头:
byte[] headerBytes = new byte[] { 0x1f, 0x8b, 8, 0, 0, 0, 0, 0, 4, 0 };
if (compressionLevel == 10)
{
headerBytes[8] = 2;
}
Run Code Online (Sandbox Code Playgroud)
预告片包含CRC32校验和以及未压缩数据的长度.
您可以查看魔术标头的前几个字节,看看它是否经过 gzip 压缩,但除非 .net 压缩器将附加信息写入注释或其他可选字段之一,否则您可能无法判断压缩器是谁。
http://www.onicos.com/staff/iz/formats/gzip.html
您还可以查看操作系统类型字段,看看它是 FAT 还是 NTFS,但这仍然不能告诉您它是由 C# 编写的...