有没有办法知道byte []是否已被gzipstream压缩?

sta*_*ser 3 c# compression gzipstream c#-4.0

有没有办法知道GzipStream.net类是否压缩了(或没有)byte [] ?

编辑: 只想知道byte []数组是否已被压缩(因为我将始终使用GzipStream进行压缩和解压缩)

dtb*_*dtb 8

GZipStreamDeflateStream与附加首部和尾部.

格式在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校验和以及未压缩数据的长度.


Joh*_*ner 1

您可以查看魔术标头的前几个字节,看看它是否经过 gzip 压缩,但除非 .net 压缩器将附加信息写入注释或其他可选字段之一,否则您可能无法判断压缩器是谁。

http://www.onicos.com/staff/iz/formats/gzip.html

您还可以查看操作系统类型字段,看看它是 FAT 还是 NTFS,但这仍然不能告诉您它是由 C# 编写的...