Я использую ICSharpCode.SharpZipLib.dll для сжатия и распаковки данных.
У меня есть следующий код, который выполняет инфляцию данных:
public static byte[] ZLibDecompress(byte[] zLibCompressedBuffer)
{
byte[] resBuffer = null;
MemoryStream mInStream = new MemoryStream(zLibCompressedBuffer);
MemoryStream mOutStream = new MemoryStream(zLibCompressedBuffer.Length);
InflaterInputStream infStream = new InflaterInputStream(mInStream);
mInStream.Position = 0;
try
{
byte[] tmpBuffer = new byte[zLibCompressedBuffer.Length];
int read = 0;
do
{
read = infStream.Read(tmpBuffer, 0, tmpBuffer.Length);
if (read > 0)
mOutStream.Write(tmpBuffer, 0, read);
} while (read > 0);
resBuffer = mOutStream.ToArray();
}
finally
{
infStream.Close();
mInStream.Close();
mOutStream.Close();
}
return resBuffer;
}
Этот код на самом деле работает, и теперь я хочу сжать результат обратно.
Так вот мой код:
public static byte[] ZLibCompress(byte[] buffer)
{
byte[] resBuffer = null;
MemoryStream mOutStream = new MemoryStream(buffer.Length);
DeflaterOutputStream defStream = new DeflaterOutputStream(mOutStream);
try
{
defStream.Write(buffer, 0, buffer.Length);
defStream.Flush();
defStream.Finish();
resBuffer = mOutStream.ToArray();
}
finally
{
defStream.Close();
mOutStream.Close();
}
return resBuffer;
}
Но два массива результатов двух функций не равны:
byte[] unCompBuffer = ZipUtils.ZLibDecompress(zLibBuffer);
byte[] compBuffer = ZipUtils.ZLibCompress(unCompBuffer);
bool eq = compBuffer.SequenceEqual(zLibBuffer);
eq неверно.
Есть идеи?
Спасибо за продвижение.