代码之家  ›  专栏  ›  技术社区  ›  MikeG

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

  •  5
  • MikeG  · 技术社区  · 16 年前

    我是否可以依赖.NET中使用system.io.compression.deflatestream压缩的前几个字节的数据始终是相同的?

    这些字节似乎总是第一个字节: 237,189,7,96,28,73,150,37,38,47,…

    我假设这是某种头,我想假设这个头是固定的,不会改变。

    有人有关于这个的额外信息吗?

    背景信息(我想知道此信息的原因是…)

    我在数据库表中有一个数据负载,这与缩小数据库表大小有关。 我决定开始压缩数据,而不必费心压缩现有数据。 当数据进入我的.NET代码时,数据是一个字符串。

    我希望能够查看字符串的前几个字节,看看它是否已被压缩,如果已被压缩,那么我需要对其进行去压缩。

    我最初认为我可以将字符串转换成字节,然后尝试去压缩数据。如果发生了异常,我可以假设它没有被压缩。 但是我认为检查头字节会给我带来更好的性能。

    非常感谢, 麦克G

    2 回复  |  直到 16 年前
        1
  •  1
  •   Marcelo Cantos    16 年前

    为了安全(除非有文件证明),把你自己的魔法头贴在前面。一个guid是一个很好的选择。

        2
  •  0
  •   Steven    16 年前

    有一些改进 GZipStream 由.NET 4.0制成,可防止这种情况发生。可能迁移到.NET for是一个选项:

    在.NET 4中,对system.io.compression中的压缩算法进行了改进。 deflatestream和gzipstream不再膨胀已经压缩的数据。 source

    推荐文章