我可以依赖使用.NET中System.IO.Compression.DeflateStream压缩的数据的前几个字节始终相同吗?
这些字节似乎总是第一个字节: 237,189,7,96,28,73,150,37,38,47,......
我假设这是某种标题,我想假设这个标题是固定的,不会改变。
有没有人有任何关于此的额外信息?
背景信息(我想知道此信息的原因是......)
我在数据库表中有大量数据可以做得更小。 我已经决定开始压缩数据而不打算压缩现有数据。 当数据进入我的.NET代码时,数据就是一个字符串。
我希望能够查看字符串的前几个字节并查看它是否已被压缩,如果有,那么我需要对其进行解压缩。
我原本以为我可以将字符串转换为字节,只是尝试解压缩数据。然后,如果发生异常,我可以假设它没有被压缩。 但我认为检查标头字节会给我带来更好的性能。
非常感谢, 迈克G
答案 0 :(得分:1)
为了安全起见(除非在某处记录),请在前面贴上自己的魔法标题。 GUID是一个很好的选择。
答案 1 :(得分:0)
在.NET 4.0中对GZipStream
进行了一些改进,以防止这种情况发生。也许迁移到.NET for是一个选项:
System.IO.Compression中的压缩算法在.NET 4中得到了改进。 DeflateStream和GZipStream不再膨胀已经压缩的数据。 source