// 解压缩,其中retValue保存着压缩后的数据
public void DeCompress(byte[] retValue)
{
MemoryStream testMs = new MemoryStream(retValue);
DeflateStream zipStream = new DeflateStream(testMs, CompressionMode.Decompress);
byte[] decompressedBuffer = new byte[1000];
//为什么这样的写法bytesRead=0?如果在zipStream.Read方法之前调用zipStream.ReadByte()返回为-1,然后zipStream.Read才能取到数据,读取数据和原数据不止一个字节的差距
int bytesRead = zipStream.Read(decompressedBuffer, 0, 1000);
}这是简单的测试例子,不管retValue什么数据,按照上面的写法,就是读不出数据,开始认为是流的Position的问题,但试过多种方式,都无法成功。但是只要在Read之前调用一些zipStream.ReadByte方法,就可以读出数据,但解压后的数据与压缩前的数据差了不止一个字节。
public void DeCompress(byte[] retValue)
{
MemoryStream testMs = new MemoryStream(retValue);
DeflateStream zipStream = new DeflateStream(testMs, CompressionMode.Decompress);
byte[] decompressedBuffer = new byte[1000];
//为什么这样的写法bytesRead=0?如果在zipStream.Read方法之前调用zipStream.ReadByte()返回为-1,然后zipStream.Read才能取到数据,读取数据和原数据不止一个字节的差距
int bytesRead = zipStream.Read(decompressedBuffer, 0, 1000);
}这是简单的测试例子,不管retValue什么数据,按照上面的写法,就是读不出数据,开始认为是流的Position的问题,但试过多种方式,都无法成功。但是只要在Read之前调用一些zipStream.ReadByte方法,就可以读出数据,但解压后的数据与压缩前的数据差了不止一个字节。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货