重新压缩数据后,结果与未压缩的源不同。如何再次再现相同的数据?

时间:2019-04-21 06:44:05

标签: c# compression

我得到了一个压缩数据字节数组,它占用27878个字节。它以

开头
78-9C-ED-BD-09 

,因此它应该可以通过DeflateStream读取。未压缩的数据是XML文件。我想修改此XML中的某些值,然后再次对其进行压缩,以将其保存回其源。

但是,即使不做任何修改,只是解压缩并再次压缩结果与源代码不同,这导致目标应用程序读取该字节数组时崩溃。

对于压缩和解压缩,我使用了Stackoverflow中的这些方法

private static MemoryStream Decompress(byte[] input)
{
    var output = new MemoryStream();

    using (var compressStream = new MemoryStream(input))
    using (var decompressor = new DeflateStream(compressStream, CompressionMode.Decompress))
        decompressor.CopyTo(output);

    output.Position = 0;
    return output;
}
public byte[] Compress(byte[] input)
{


    MemoryStream stream = new MemoryStream();
    DeflateStream compressionStream =
        new DeflateStream(stream, CompressionMode.Compress);
    compressionStream.Write(input, 0, input.Length);

    compressionStream.Close();

    return stream.ToArray();
}

修改19年4月23日

正如已指出的一条注释已被删除一样,deflate方法不适用于压缩数据。相反,使用DotNetZip库和该库中的某些功能,可以再次创建相同的数据!

0 个答案:

没有答案