亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? zlib.cs

?? PDF文件格式解析庫源代碼
?? CS
字號:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace QiHe.CodeLib.Compress
{
    public static class Zlib
    {
        public static void Deflate(Stream input, Stream output)
        {
            BinaryWriter writer = new BinaryWriter(output);
            ZlibStream zlibStream = ZlibStream.DeflateStream();
            zlibStream.WriteHeader(writer);
            QiHe.CodeLib.Compress.Deflate.Compress(input, output);
            zlibStream.Checksum = Adler32.Compute(input, 0, (int)input.Position);
            zlibStream.WriteFooter(writer);
            writer.Flush();
        }

        public static void Inflate(Stream input, Stream output)
        {
            BinaryReader reader = new BinaryReader(input);
            ZlibStream zlibStream = new ZlibStream();
            zlibStream.ReadHeader(reader);
            long pos = output.Position;
            if (zlibStream.CompressMethod == (int)CompressionMethod.Deflate)
            {
                QiHe.CodeLib.Compress.Deflate.Decompress(input, output);
            }
            else
            {
                throw new Exception("Unknown Compression Method: " + zlibStream.CompressMethod);
            }
            int len = (int)(output.Position - pos);
            zlibStream.Checksum = Adler32.Compute(output, pos, len);
            zlibStream.ReadFooter(reader);
        }

        public static byte[] Decode(Stream input)
        {
            MemoryStream output = new MemoryStream();
            Deflate(input, output);
            return output.ToArray();
        }

        public static void Deflate(Stream input, Stream output, CompressionOption level)
        {
            Compress(input, output, CompressionMethod.Deflate, level);
        }

        public static void Compress(Stream input, Stream output, CompressionMethod method, CompressionOption level)
        {
            BinaryWriter writer = new BinaryWriter(output);
            ZlibStream zlibStream = ZlibStream.DeflateStream();
            zlibStream.CompressMethod = (int)method;
            zlibStream.WriteHeader(writer);
            long pos = input.Position;
            Native.Compress(input, output, method, level);
            zlibStream.Checksum = Adler32.Compute(input, pos, (int)(input.Position - pos));
            zlibStream.WriteFooter(writer);
            writer.Flush();
        }

        public static void Decompress(Stream input, Stream output)
        {
            BinaryReader reader = new BinaryReader(input);
            ZlibStream zlibStream = new ZlibStream();
            zlibStream.ReadHeader(reader);
            long pos = output.Position;
            CompressionMethod method = (CompressionMethod)zlibStream.CompressMethod;
            Native.Decompress(input, output, method);
            int len = (int)(output.Position - pos);
            zlibStream.Checksum = Adler32.Compute(output, pos, len);
            zlibStream.ReadFooter(reader);
        }
    }

    public class ZlibStream
    {
        byte CMF;
        byte FLG;
        uint DICTID;
        byte[] compressedData;
        uint ADLER32;

        public ZlibStream() { }

        public static ZlibStream DeflateStream()
        {
            ZlibStream zlibStream = new ZlibStream();
            zlibStream.CompressMethod = (int)CompressionMethod.Deflate;
            zlibStream.CompressionInfo = 7; //32KB
            zlibStream.CompressionLevel = 1;
            return zlibStream;
        }

        public void ReadHeader(BinaryReader reader)
        {
            CMF = reader.ReadByte();
            FLG = reader.ReadByte();
            if (!CheckFlag())
            {
                throw new Exception("zlib header flag illegal");
            }
            if (HasPresetDictionary)
            {
                DICTID = ReadUInt32BigEndian(reader);
            }
        }

        public void ReadFooter(BinaryReader reader)
        {
            uint checksum = ReadUInt32BigEndian(reader);
            if (checksum != ADLER32) //CheckIntegrity
            {
                throw new Exception("Adler chksum doesn't match: " + ADLER32 + " vs. " + checksum);
            }
        }

        private bool CheckFlag()
        {
            return (CMF * 256 + FLG) % 31 == 0;
        }

        private void ValidateFlag()
        {
            FlagCheck = 0;
            FlagCheck = 31 - (CMF * 256 + FLG) % 31;
        }

        private static UInt32 ReadUInt32BigEndian(BinaryReader reader)
        {
            UInt32 value = 0;
            for (int i = 0; i < 4; i++)
            {
                value = (value << 8) | reader.ReadByte();
            }
            return value;
        }

        private static void WriteReadUInt32BigEndian(BinaryWriter writer, uint value)
        {
            for (int i = 3; i >= 0; i--)
            {
                byte bt = (byte)((value >> i * 8) & 0xFF);
                writer.Write(bt);
            }
        }

        public void WriteHeader(BinaryWriter writer)
        {
            ValidateFlag();
            writer.Write(CMF);
            writer.Write(FLG);
            if (HasPresetDictionary)
            {
                writer.Write(DICTID);
            }
        }

        public void WriteFooter(BinaryWriter writer)
        {
            WriteReadUInt32BigEndian(writer, ADLER32);
        }

        /// <summary>
        /// This identifies the compression method used in the file. CM = 8
        /// denotes the "deflate" compression method with a window size up
        /// to 32K.  CM = 15 is reserved.  It might be used in a future
        /// version of this specification to indicate the presence of an
        /// extra field before the compressed data.
        /// </summary>
        public int CompressMethod
        {
            get
            {
                return CMF & 0x0F;
            }
            set
            {
                if (value < 0 || value > 15)
                {
                    throw new ArgumentOutOfRangeException("CompressMethod");
                }
                CMF = (byte)((CMF & 0xF0) | value);
            }
        }

        /// <summary>
        /// For CM = 8, CINFO is the base-2 logarithm of the LZ77 window
        /// size, minus eight (CINFO=7 indicates a 32K window size). Values
        /// of CINFO above 7 are not allowed in this version of the
        /// specification.  CINFO is not defined in this specification for
        /// CM not equal to 8.
        /// </summary>
        public int CompressionInfo
        {
            get
            {
                return (CMF & 0xF0) >> 4;
            }
            set
            {
                if (value < 0 || value > 15)
                {
                    throw new ArgumentOutOfRangeException("CompressionInfo");
                }
                CMF = (byte)((CMF & 0x0F) | (value << 4));
            }
        }

        public int FlagCheck
        {
            get { return FLG & 0x1F; }
            set { FLG = (byte)((FLG & 0xE0) | value); }
        }

        /// <summary>
        /// Preset dictionary is used or not
        /// </summary>
        public bool HasPresetDictionary
        {
            get { return (FLG & 0x20) != 0; }
            set { FLG = (byte)(FLG | 0x20); }
        }

        /// <summary>
        /// These flags are available for use by specific compression
        /// methods.  The "deflate" method (CM = 8) sets these flags as
        /// follows:
        /// 
        ///   0 - compressor used fastest algorithm
        ///   1 - compressor used fast algorithm
        ///   2 - compressor used default algorithm
        ///   3 - compressor used maximum compression, slowest algorithm
        /// 
        /// The information in FLEVEL is not needed for decompression; it
        /// is there to indicate if recompression might be worthwhile.
        /// </summary>
        public int CompressionLevel
        {
            get { return (FLG & 0xC0) >> 6; }
            set { FLG = (byte)((FLG & 0x3F) | (value << 6)); }
        }

        /// <summary>
        /// The dictionary is a sequence of
        /// bytes which are initially fed to the compressor without
        /// producing any compressed output. DICTID is the Adler-32 checksum
        /// of this sequence of bytes. 
        /// The decompressor can use this identifier to determine
        /// which dictionary has been used by the compressor.
        /// </summary>
        public uint DictionaryID
        {
            get { return DICTID; }
            set { DICTID = value; }
        }

        /// <summary>
        /// For compression method 8, the compressed data is stored in the
        /// deflate compressed data format.
        /// </summary>
        public byte[] CompressedData
        {
            get { return compressedData; }
            set { compressedData = value; }
        }

        /// <summary>
        /// This is a checksum value of the uncompressed data
        /// (excluding any dictionary data) computed according to Adler-32
        /// algorithm.
        /// </summary>
        public uint Checksum
        {
            get { return ADLER32; }
            set { ADLER32 = value; }
        }
    }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品系列免费在线观看| 欧美性高清videossexo| 日韩亚洲欧美在线| 天堂久久一区二区三区| 欧美日韩国产高清一区二区三区| 懂色av一区二区三区免费观看 | 高清成人免费视频| 日韩不卡手机在线v区| 亚洲成a人片在线观看中文| 亚洲va韩国va欧美va| 午夜精品久久久久久不卡8050| 午夜日韩在线观看| 免费视频最近日韩| 亚洲欧美日韩国产成人精品影院 | 在线视频欧美精品| 激情小说欧美图片| 国产精品影视天天线| 国产在线视频不卡二| 日本最新不卡在线| 日韩三级中文字幕| 91麻豆精品国产91久久久更新时间| 欧美日韩免费一区二区三区视频| 欧美国产精品v| 成人精品国产一区二区4080| 国产一区二区三区黄视频 | 91免费国产在线观看| 午夜精品久久久久久久久| 精品免费日韩av| 91片黄在线观看| 麻豆极品一区二区三区| 91精品国产一区二区| 91精品国产全国免费观看| 中文字幕亚洲视频| 久久99精品久久久| 国产综合色精品一区二区三区| 国产精品一二三| 欧美日韩久久一区| 中文久久乱码一区二区| 国内精品免费在线观看| 亚洲美女视频一区| 91蜜桃网址入口| 亚洲人成7777| 久久久久久久精| 欧美久久久久中文字幕| av亚洲产国偷v产偷v自拍| 日韩电影在线一区| 亚洲欧美另类久久久精品| 久久尤物电影视频在线观看| 日本高清不卡一区| 丁香婷婷深情五月亚洲| 日本欧美肥老太交大片| 亚洲视频一区二区在线观看| 久久久久久亚洲综合影院红桃| 在线欧美日韩精品| 成人小视频免费观看| 韩国午夜理伦三级不卡影院| 亚洲va欧美va人人爽| 依依成人综合视频| 日韩理论片中文av| 国产日韩欧美综合在线| 欧美成人在线直播| 欧美一区欧美二区| 欧美日韩国产片| 色狠狠桃花综合| 91片在线免费观看| 91丨porny丨国产入口| 国产99久久久国产精品潘金 | 国产91综合一区在线观看| 日韩成人伦理电影在线观看| 亚洲一区二区三区四区在线免费观看| 欧美国产在线观看| 国产片一区二区三区| 26uuu亚洲综合色| 欧美成人女星排名| 精品国产一区二区三区四区四| 欧美高清性hdvideosex| 亚洲欧美色图小说| 精品日韩欧美一区二区| 欧美videos大乳护士334| 欧美精品丝袜久久久中文字幕| 欧美另类久久久品| 欧美日本在线观看| 制服.丝袜.亚洲.中文.综合| 在线播放欧美女士性生活| 欧美日韩成人在线一区| 日韩写真欧美这视频| 日韩小视频在线观看专区| 欧美成人午夜电影| 国产午夜亚洲精品不卡| 日本一区二区成人| 91蜜桃在线观看| 国产酒店精品激情| 久久电影网站中文字幕| 亚洲永久精品大片| 亚洲高清免费一级二级三级| 亚洲一区二区在线免费观看视频 | 高清av一区二区| 美女精品一区二区| 日韩av午夜在线观看| 奇米精品一区二区三区四区| 首页国产丝袜综合| 亚洲国产精品久久久男人的天堂| 亚洲另类在线一区| 视频在线在亚洲| 亚洲综合色在线| 亚洲一区二区影院| 蜜臀久久99精品久久久画质超高清| 国产欧美日韩另类视频免费观看| 亚洲精品一区二区在线观看| 亚洲色图丝袜美腿| 老司机精品视频在线| 日韩va亚洲va欧美va久久| 欧美调教femdomvk| 欧美一区二区三区免费大片 | 狠狠色丁香婷婷综合久久片| 欧美电影一区二区| 中文字幕av不卡| 国产河南妇女毛片精品久久久| 成人精品亚洲人成在线| 99re视频这里只有精品| 欧美人与禽zozo性伦| 91国产丝袜在线播放| 日韩免费观看高清完整版| 91在线精品一区二区| 欧美裸体一区二区三区| 日韩美一区二区三区| 日本一区二区三区国色天香 | 成人午夜精品在线| 欧美亚洲日本国产| 欧美电影免费提供在线观看| 日韩精品一区二区三区中文不卡 | 国模少妇一区二区三区| 日韩av中文在线观看| 波多野结衣中文一区| 日韩欧美亚洲国产另类| 国产精品成人免费在线| 久久精品国产久精国产| 国产福利91精品| 成人黄色免费短视频| 337p亚洲精品色噜噜| 欧美激情一区二区在线| 亚洲自拍偷拍麻豆| 国产mv日韩mv欧美| 5858s免费视频成人| 亚洲一区二区视频在线| 日韩高清国产一区在线| 色呦呦国产精品| 国产精品伦理一区二区| 日韩av成人高清| 欧美日韩国产综合一区二区三区| 国产色产综合产在线视频| 国产在线乱码一区二区三区| 在线中文字幕不卡| 亚洲欧美国产高清| 人人精品人人爱| 制服丝袜一区二区三区| 日日欢夜夜爽一区| 91在线观看地址| 中文字幕一区二区三区在线观看| 美日韩一区二区| 欧美大片在线观看一区二区| 亚洲欧美日韩系列| 国产一区二区三区在线观看精品| 色哟哟日韩精品| 国产精品久久久久aaaa| 国产在线国偷精品免费看| 日韩免费视频一区| 久久97超碰国产精品超碰| 欧美日韩五月天| 亚洲超碰精品一区二区| 色噜噜狠狠成人中文综合 | 精品少妇一区二区三区日产乱码| 日韩成人午夜电影| 欧美乱妇15p| 图片区日韩欧美亚洲| 欧美一区二区三区视频在线| 一区二区三区视频在线观看| 色偷偷久久人人79超碰人人澡| 一本色道久久综合精品竹菊| 一区二区欧美在线观看| 欧美性大战久久| 亚洲综合清纯丝袜自拍| 欧美日韩精品免费| 亚洲制服丝袜av| 欧美一区二区日韩一区二区| 精品一区二区在线看| 精品国产凹凸成av人网站| 男人的天堂久久精品| 精品国产伦一区二区三区观看体验| 亚洲午夜三级在线| 国产日产欧美一区| 制服视频三区第一页精品| 成人黄色软件下载| aaa欧美大片| 国产一区二区三区久久久| 亚洲一区二区三区三| 亚洲美女屁股眼交| 亚洲欧洲三级电影| 日韩免费观看高清完整版 | 国产精品白丝在线|