0

我花了几个小时试图弄清楚如何在这个项目中模拟精确的解压缩:https ://github.com/crimsoncantab/aok-hotkeys/blob/master/modules/hkizip.py但无济于事。

如果您访问此网站:http ://aokhotkeys.appspot.com/您可以单击任何预设并下载它自己查看。

解压应该输出一个.hki文件到文本文件

这是我的尝试,可能不如上面链接的 python 项目准确:

private string ZlibCodecDecompress(byte[] compressed)
{
    int outputSize = 2048;
    byte[] output = new Byte[outputSize];

    // If you have a ZLIB stream, set this to true.  If you have
    // a bare DEFLATE stream, set this to false.
    bool expectRfc1950Header = false;

    using (MemoryStream ms = new MemoryStream())
    {
        ZlibCodec compressor = new ZlibCodec();
        compressor.InitializeInflate(expectRfc1950Header);

        compressor.InputBuffer = compressed;
        compressor.AvailableBytesIn = compressed.Length;
        compressor.NextIn = 0;
        compressor.CompressLevel = Ionic.Zlib.CompressionLevel.Level8;

        compressor.OutputBuffer = output;




        foreach (var f in new FlushType[] { FlushType.None, FlushType.Finish })
        {
            int bytesToWrite = 0;
            do
            {
                compressor.AvailableBytesOut = outputSize;
                compressor.NextOut = 0;
                compressor.Inflate(f);

                bytesToWrite = outputSize - compressor.AvailableBytesOut;
                if (bytesToWrite > 0)
                    ms.Write(output, 0, bytesToWrite);
            }
            while ((f == FlushType.None && (compressor.AvailableBytesIn != 0 || compressor.AvailableBytesOut == 0)) ||
                   (f == FlushType.Finish && bytesToWrite != 0));
        }

        compressor.EndInflate();

        return UTF8Encoding.UTF8.GetString(ms.ToArray());
    }
}

此方法返回:“Ionic.Zlib.ZlibException: Bad state”

我会很感激任何帮助。

4

0 回答 0