Мне дан байтовый массив сжатых данных, который занимает 27878 байтов.Он начинается с
78-9C-ED-BD-09
, поэтому он должен быть читаемым с DeflateStream.Несжатые данные - это файл XML.Я хочу изменить некоторые значения в этом XML, а затем снова сжать его, чтобы сохранить его в исходном коде.
Но даже без каких-либо модификаций, просто распаковка и сжатие снова, результат отличается от источника, что приводит к сбою target-application, который читает этот байтовый массив.
Для сжатия и распаковки я использовал эти методы, найденные в 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();
}
Редактировать 04/23/19
Как было отмечено, комментарий, который был удален, методы deflate не подходят для сжатия данных.Вместо этого с помощью библиотеки DotNetZip и некоторой работы в этой библиотеке можно было снова создать те же данные!