如何判断一个字节数组是否已经被压缩?

5
我可以依赖于使用.NET中System.IO.Compression.DeflateStream压缩的前几个字节始终相同吗?
这些字节似乎总是第一个字节:237,189,7,96,28,73,150,37,38,47等。
我假设这是某种标题,我想假设该标题是固定的,不会改变。
有人有关于此的额外信息吗?
背景信息(我想知道这个信息的原因是...)
我有一堆数据在数据库表中,需要缩小大小。 我已决定开始压缩数据并且不再压缩现有数据。 当数据进入我的.NET代码时,数据是字符串。
我希望能够查看字符串的前几个字节,并查看是否已压缩,如果已压缩,则需要对其进行解压缩。
最初我认为可以将字符串转换为字节并尝试解压缩数据。 然后,如果发生异常,我就可以假设它没有被压缩。 但我认为检查头字节会给我更好的性能。
非常感谢, Mike G
2个回答

1

为了安全起见,最好在开头加上你自己的魔术头(除非某处有文档记录)。GUID是一个不错的选择。


谢谢,我想我会选择这个答案,很好的横向思维!(我还没有使用NET 4,所以另一个答案对我来说不可用) - MikeG

0

在.NET 4.0中对GZipStream进行了一些改进,可以防止这种情况发生。也许迁移到.NET是一个选择:

在.NET 4.0中,System.IO.Compression中的压缩算法得到了改进。 DeflateStream和GZipStream不再膨胀已经压缩过的数据。source


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接