解压缩Zlib数据

时间:2014-04-21 13:28:51

标签: c# c++ matlab c#-4.0 zlib

我目前正在尝试从Zlib压缩的.mat文件中解压缩一些字节。 我从MAT-File Format读了第1-12页第3段,它告诉.mat文件中的字节被Zlib压缩。

所以,我的问题是,C#是否有一些可以解压缩字节的API或库。 如果我有一组像

这样的字节
6236 20e6 0062 1606 0860 85f2 1981 980b
4cb3 30e4 25e6 a60a 40f9 2545 9989 39f1

然后我将它们加载到SByte数组中,我怎么能解压缩它们呢?

我还在线检查了一些图书馆。他们似乎可以做的是解压缩整个文件,而不是一些字节....

我对这方面很陌生。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

您可以使用SharpZipLib中的InflaterInputStream.mat文件的标头长度为0x88,因此您必须跳过它。我从这里获取了样本文件SampleMatlabMatDataFiles.zip

byte[] data = File.ReadAllBytes("c.mat").Skip(0x88).ToArray();
byte[] decompressedData = new byte[10000];
int decompressedLength = 0;
using (MemoryStream memory = new MemoryStream(data))
using (InflaterInputStream inflater = new InflaterInputStream(memory))
    decompressedLength = inflater.Read(decompressedData, 0, decompressedData.Length);