【发布时间】:2013-12-31 02:12:40
【问题描述】:
我正在使用单声道来膨胀/缩小字节。代码如下:
public static byte[] Inflate(byte[] data)
{
using (MemoryStream inStream = new MemoryStream(data))
{
using (MemoryStream outStream = new MemoryStream())
{
using (DeflateStream decompressStream = new DeflateStream(inStream, CompressionMode.Decompress))
{
decompressStream.CopyTo(outStream);
}
return outStream.ToArray();
}
}
}
输入数据为: 47bytes。算法是 DEFLATE。
我已经在其他平台上成功地对相同的数据进行了膨胀,但是通过上面的代码,它抛出了以下异常:
System.IO.IOException: Corrupted data ReadInternal
at System.IO.Compression.DeflateStreamNative.CheckResult (Int32 result, System.String where) [0x00000] in <filename unknown>:0
at System.IO.Compression.DeflateStreamNative.ReadZStream (IntPtr buffer, Int32 length) [0x00000] in <filename unknown>:0
at System.IO.Compression.DeflateStream.ReadInternal (System.Byte[] array, Int32 offset, Int32 count) [0x00000] in <filename unknown>:0
at System.IO.Compression.DeflateStream.Read (System.Byte[] dest, Int32 dest_offset, Int32 count) [0x00000] in <filename unknown>:0
at System.IO.Stream.CopyTo (System.IO.Stream destination, Int32 bufferSize) [0x00000] in <filename unknown>:0
at System.IO.Stream.CopyTo (System.IO.Stream destination) [0x00000] in <filename unknown>:0
【问题讨论】:
-
在 .NET 4.5 上出现类似错误(InvalidDataException,“块长度与其补码不匹配。”)。所以我猜数据真的是无效...
-
我在尝试在 Unity3d 中构建我的世界地图编辑器时遇到此错误。我认为这是因为压缩数据嵌入在另一个二进制文件中,但不是。我将二进制压缩块导出到一个文件中,我可以使用 nodejs zlib 库对其进行扩充。
标签: c# mono deflatestream