Vb.net DeflateStream在解压缩数据时重复字节

Vb.net DeflateStream在解压缩数据时重复字节,vb.net,deflatestream,Vb.net,Deflatestream,我遇到了DeflateStream的一个问题——一些数据被反复写入,直到最后 代码如下: Dim bytesin As Byte() = ... ' An array of compressed bytes Dim bytesout As Byte() Dim count As Integer Using ms As New MemoryStream(bytesin) Using ds As New Compression.DeflateStream(ms, Compression.C

我遇到了DeflateStream的一个问题——一些数据被反复写入,直到最后

代码如下:

Dim bytesin As Byte() = ... ' An array of compressed bytes
Dim bytesout As Byte()
Dim count As Integer

Using ms As New MemoryStream(bytesin)
    Using ds As New Compression.DeflateStream(ms, Compression.CompressionMode.Decompress)
        Using outputStream As New MemoryStream()
            Dim buffer As Byte() = New Byte(1024) {}
            While InlineAssignHelper(count, ds.Read(buffer, 0, buffer.Length)) > 0
                outputStream.Write(buffer, 0, count)
            End While
            bytesout = outputStream.ToArray
        End Using
    End Using
End Using

Dim fs As FileStream = File.OpenWrite("fws.swf")
fs.Write(bytesout, 0, bytesout.Length)
fs.Flush()
fs.Close()


Private Function InlineAssignHelper(Of T)(ByRef target As T, ByVal value As T) As T
    target = value
    Return value
End Function
你怎么解释这个

更新


我试过使用Ionic.Zlib.ZlibStream和Ionic.Zlib.DeflateStream,得到了同样奇怪的结果。

可能不是您提到的问题的原因,但是第二个“ds.read(buffer,0,buffer.Length)”读取的数据是否丢失了?我纠正了错误输入-这是在多次代码更改后发生的。但这并不能解决问题。无论如何,谢谢你。我不确定InlineAssignHelper为什么会这样做,但我猜循环中最后一次读取的缓冲区没有被清除,而你正在写入剩余的字节。
InlineAssignHelper()
是一个帮助函数,它提供了一个与
if((myvar=(testme))>0
C#语法等价的函数<代码>缓冲区的大小为1024字节;为什么它以随机值重复?这就是问题所在!:)更改
缓冲区
大小时,重复显示在相同的文件偏移量处。