데이터 압축 및 압축 해제에 ICSharpCode.SharpZipLib.dll이 사용됩니다.
나는 데이터의 인플레이션을 수행하는 다음과 같은 코드가 있습니다ICSharpCode의 반대 동작 ... C#의 InflaterInputStream
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;
}
그러나 두 함수의 두 개의 결과 배열이 동일 arn't :
byte[] unCompBuffer = ZipUtils.ZLibDecompress(zLibBuffer);
byte[] compBuffer = ZipUtils.ZLibCompress(unCompBuffer);
bool eq = compBuffer.SequenceEqual(zLibBuffer);
EQ가 거짓
그래서이 내 코드입니다.
아이디어가 있으십니까?
감사합니다.
두 배열이 서로 같지 않습니까? 압축과 압축 해제 결과가 동일하지 않다는 말입니까? 문제를 자세히 설명하십시오 (직접 답변을 편집 할 수 있습니다 : 태그 아래에있는 '편집'을 클릭하십시오) – gideon
사용중인 라이브러리를 지정할 수 있습니까? – gideon
요청한 것처럼 게시물을 편집했습니다. – rodnower