如何在MemoryStream中找到Gzip字符串的开头?

时间:2017-05-23 11:29:27

标签: c# http tcp gzip gzipstream

byte[] httpDecompress(HttpDatagram http)
    {
        int magicnum = 0x1f8b;
        Stream str= http.Body.ToMemoryStream();
        using (var zipStream = new GZipStream(str, CompressionMode.Decompress))
        using (var resultStream = new MemoryStream())
        {
            zipStream.CopyTo(resultStream);
            return resultStream.ToArray();
        }
    }

有代码,但它给出了一个幻数错误。我怎么能找到GZip字符串的开头,我认为问题的根源就在那里。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

不知道gzip流的启动位置可能是您的问题,也可能不是。 (事实上​​,可能不是。)在任何情况下,您都可以搜索三字节序列1f 8b 08来识别候选gzip流。从1f开始解压缩,看看它是否真的是一个gzip流。