当前位置: 首页>>代码示例>>C#>>正文


C# Zlib.ZlibCodec类代码示例

本文整理汇总了C#中Ionic.Zlib.ZlibCodec的典型用法代码示例。如果您正苦于以下问题:C# ZlibCodec类的具体用法?C# ZlibCodec怎么用?C# ZlibCodec使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


ZlibCodec类属于Ionic.Zlib命名空间,在下文中一共展示了ZlibCodec类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: DeflateStream

 public DeflateStream( Stream stream, bool leaveOpen )
 {
     _stream = stream;
     _leaveOpen = leaveOpen;
     workBuffer = new byte[16384]; // TODO: 1024 bytes?
     z = new ZlibCodec();
 }
开发者ID:lavajoe,项目名称:ClassicalSharp,代码行数:7,代码来源:DeflateStream.cs

示例2: Initialize

        internal int Initialize(ZlibCodec codec, int w)
        {
            _codec = codec;
            _codec.Message = null;
            blocks = null;

            // handle undocumented nowrap option (no zlib header or check)
            //nowrap = 0;
            //if (w < 0)
            //{
            //    w = - w;
            //    nowrap = 1;
            //}

            // set window size
            if (w < 8 || w > 15)
            {
                End();
                throw new ZlibException("Bad window size.");

                //return ZlibConstants.Z_STREAM_ERROR;
            }
            wbits = w;

            blocks = new InflateBlocks(codec,
                                       HandleRfc1950HeaderBytes ? this : null,
                                       1 << w);

            // reset state
            Reset();
            return ZlibConstants.Z_OK;
        }
开发者ID:nzdunic,项目名称:ravendb,代码行数:32,代码来源:InflateManager.cs

示例3: InflateTreesDynamic

        internal void InflateTreesDynamic(int nl, int nd, int[] c, ref int bl, ref int bd, 
		                                  ref int tl, ref int td, int[] hp, ZlibCodec z)
        {
            // build literal/length tree
            ResetWorkArea( 288 );
            hn = 0;
            int result = BuildTree(c, 0, nl, 257, cplens, cplext, ref tl, ref bl, hp);
            if (result != RCode.Okay || bl == 0) {
                string message = null;
                if (result == RCode.DataError) {
                    message = "oversubscribed literal/length tree";
                } else {
                    message = "incomplete literal/length tree";
                }
                throw new InvalidOperationException( "Unable to inflate dynamic tree: " + message );
            }

            // build distance tree
            ResetWorkArea( 288 );
            result = BuildTree(c, nl, nd, 0, cpdist, cpdext, ref td, ref bd, hp);

            if (result != RCode.Okay || (bd == 0 && nl > 257)) {
                string message = null;
                if (result == RCode.DataError) {
                    message = "oversubscribed distance tree";
                } else if (result == RCode.BufferError) {
                    message = "incomplete distance tree";
                } else {
                    message = "empty distance tree with lengths";
                }
                throw new InvalidOperationException( "Unable to inflate dynamic tree: " + message );
            }
        }
开发者ID:Chameleonherman,项目名称:ClassicalSharp,代码行数:33,代码来源:InfTree.cs

示例4: ZlibStream

        public ZlibStream(Stream innerStream)
        {
            _inner = innerStream;

            if (_inner.CanRead)
            {
                _in = new ZlibCodec(CompressionMode.Decompress);
                //int ret = _in.InitializeInflate();
                //if (ret != ZlibConstants.Z_OK)
                //    throw new ZlibException("Unable to initialize Inflate");
                _inBuff = new byte[_bufferSize];
                _in.AvailableBytesIn = 0;
                _in.InputBuffer = _inBuff;
                _in.NextIn = 0;
            }

            if (_inner.CanWrite)
            {
                _out = new ZlibCodec(CompressionMode.Compress);
                int ret = _out.InitializeDeflate(CompressionLevel.Default);
                if (ret != ZlibConstants.Z_OK)
                    throw new ZlibException("Unable to initialize Deflate");
                _outBuff = new byte[_bufferSize];
                _out.OutputBuffer = _outBuff;
            }
        }
开发者ID:nickwhaley,项目名称:ubiety,代码行数:26,代码来源:ZlibStream.cs

示例5: Initialize

        internal void Initialize( ZlibCodec codec, int w )
        {
            _codec = codec;
            blocks = null;

            wbits = w;
            blocks = new InflateBlocks( codec, 1 << w );
            Reset();
        }
开发者ID:Chameleonherman,项目名称:ClassicalSharp,代码行数:9,代码来源:Inflate.cs

示例6: InflateTreeBits

        internal void InflateTreeBits(int[] c, ref int bb, ref int tb, int[] hp, ZlibCodec z)
        {
            ResetWorkArea( 19 );
            hn = 0;
            int result = BuildTree(c, 0, 19, 19, null, null, ref tb, ref bb, hp);

            if (result == RCode.DataError) {
                throw new InvalidOperationException( "oversubscribed dynamic bit lengths tree" );
            } else if (result == RCode.BufferError || bb == 0) {
                throw new InvalidOperationException( "incomplete dynamic bit lengths tree" );
            }
        }
开发者ID:Chameleonherman,项目名称:ClassicalSharp,代码行数:12,代码来源:InfTree.cs

示例7: WorkItem

            public WorkItem(int size, Ionic.Zlib.CompressionLevel compressLevel, CompressionStrategy strategy)
            {
                buffer= new byte[size];
                // alloc 5 bytes overhead for every block (margin of safety= 2)
                int n = size + ((size / 32768)+1) * 5 * 2;
                compressed= new byte[n];

                status = (int)Status.None;
                compressor = new ZlibCodec();
                compressor.InitializeDeflate(compressLevel, false);
                compressor.OutputBuffer = compressed;
                compressor.InputBuffer = buffer;
            }
开发者ID:tofurama3000,项目名称:substrate-minecraft,代码行数:13,代码来源:ParallelDeflateOutputStream.cs

示例8: Decompress

 /// <summary>
 /// Decompress the specified inputData.
 /// </summary>
 /// <param name="inputData">Input data.</param>
 /// <returns>decompressed byte array</returns>
 public static byte[] Decompress(byte[] inputData)
 {
     var zlib = new ZlibCodec(Ionic.Zlib.CompressionMode.Decompress);
     zlib.InputBuffer = inputData;
     zlib.OutputBuffer = new byte[MAX_PACKET_SIZE];
     zlib.NextIn = 0;
     zlib.AvailableBytesIn = inputData.Length;
     zlib.NextOut = 0;
     zlib.AvailableBytesOut = MAX_PACKET_SIZE;
     zlib.Inflate(FlushType.Finish);
     var output = new byte[zlib.TotalBytesOut];
     Array.Copy(zlib.OutputBuffer, output, (int)zlib.TotalBytesOut);
     return output;
 }
开发者ID:Lopt,项目名称:ascendancy,代码行数:19,代码来源:CompressionHelper.cs

示例9: WorkItem

 public WorkItem(int size,
                 CompressionLevel compressLevel,
                 CompressionStrategy strategy,
                 int ix)
 {
     this.buffer= new byte[size];
     // alloc 5 bytes overhead for every block (margin of safety= 2)
     int n = size + ((size / 32768)+1) * 5 * 2;
     this.compressed = new byte[n];
     this.compressor = new ZlibCodec();
     this.compressor.InitializeDeflate(compressLevel, false);
     this.compressor.OutputBuffer = this.compressed;
     this.compressor.InputBuffer = this.buffer;
     this.index = ix;
 }
开发者ID:rhlbenjamin,项目名称:azure-media-services-samples,代码行数:15,代码来源:ParallelDeflateOutputStream.cs

示例10: ZlibCodecCompress

        private static byte[] ZlibCodecCompress(string textToCompress)
        {
            int outputSize = 2048;
            byte[] output = new Byte[outputSize];
            byte[] uncompressed = UTF8Encoding.UTF8.GetBytes(textToCompress);
            int lengthToCompress = uncompressed.Length;

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

            using (MemoryStream ms = new MemoryStream())
            {
                ZlibCodec compressor = new ZlibCodec();
                compressor.InitializeDeflate(CompressionLevel.BestCompression, wantRfc1950Header);

                compressor.InputBuffer = uncompressed;
                compressor.AvailableBytesIn = lengthToCompress;
                compressor.NextIn = 0;
                compressor.OutputBuffer = output;

                foreach (var f in new FlushType[] { FlushType.None, FlushType.Finish })
                {
                    int bytesToWrite = 0;
                    do
                    {
                        compressor.AvailableBytesOut = outputSize;
                        compressor.NextOut = 0;
                        compressor.Deflate(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.EndDeflate();

                ms.Flush();
                return ms.ToArray();
            }
        }
开发者ID:rlmarsh85,项目名称:bloodlines-resurgence,代码行数:44,代码来源:Compression.cs

示例11: ZLibDecompress

        public static byte[] ZLibDecompress(byte[] compressed, bool mode, int outputSize)
        {
            byte[] output = new Byte[outputSize];

            bool expectRfc1950Header = mode;

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

                compressor.InputBuffer = compressed;
                compressor.AvailableBytesIn = compressed.Length;
                compressor.NextIn = 0;
                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 (ms.ToArray());
            }
        }
开发者ID:mansemino,项目名称:Arctium,代码行数:38,代码来源:ZLib.cs

示例12: InflateBlocks

 internal InflateBlocks(ZlibCodec z, System.Object checkfn, int w)
 {
     hufts = new int[MANY * 3];
     window = new byte[w];
     end = w;
     this.checkfn = checkfn;
     mode = TYPE;
     Reset(z, null);
 }
开发者ID:gregsohl,项目名称:Cool_dotNet_Tools_Techniques_Libraries_Presentation,代码行数:9,代码来源:Inflate.cs

示例13: Process

        internal int Process(InflateBlocks blocks, ZlibCodec z, int r)
        {
            int j; // temporary storage
            int tindex; // temporary pointer
            int e; // extra bits or operation
            int b = 0; // bit buffer
            int k = 0; // bits in bit buffer
            int p = 0; // input data pointer
            int n; // bytes available there
            int q; // output window write pointer
            int m; // bytes to end of window or read pointer
            int f; // pointer to copy strings from

            // copy input/output information to locals (UPDATE macro restores)
            p = z.NextIn; n = z.AvailableBytesIn; b = blocks.bitb; k = blocks.bitk;
            q = blocks.write; m = q < blocks.read ? blocks.read - q - 1 : blocks.end - q;

            // process input and output based on current state
            while (true)
            {
                switch (mode)
                {
                    // waiting for "i:"=input, "o:"=output, "x:"=nothing
                    case START:  // x: set up for LEN
                        if (m >= 258 && n >= 10)
                        {

                            blocks.bitb = b; blocks.bitk = k;
                            z.AvailableBytesIn = n; z.TotalBytesIn += p - z.NextIn; z.NextIn = p;
                            blocks.write = q;
                            r = InflateFast(lbits, dbits, ltree, ltree_index, dtree, dtree_index, blocks, z);

                            p = z.NextIn; n = z.AvailableBytesIn; b = blocks.bitb; k = blocks.bitk;
                            q = blocks.write; m = q < blocks.read ? blocks.read - q - 1 : blocks.end - q;

                            if (r != ZlibConstants.Z_OK)
                            {
                                mode = (r == ZlibConstants.Z_STREAM_END) ? WASH : BADCODE;
                                break;
                            }
                        }
                        need = lbits;
                        tree = ltree;
                        tree_index = ltree_index;

                        mode = LEN;
                        goto case LEN;

                    case LEN:  // i: get length/literal/eob next
                        j = need;

                        while (k < (j))
                        {
                            if (n != 0)
                                r = ZlibConstants.Z_OK;
                            else
                            {

                                blocks.bitb = b; blocks.bitk = k;
                                z.AvailableBytesIn = n; z.TotalBytesIn += p - z.NextIn; z.NextIn = p;
                                blocks.write = q;
                                return blocks.Flush(z, r);
                            }
                            n--;
                            b |= (z.InputBuffer[p++] & 0xff) << k;
                            k += 8;
                        }

                        tindex = (tree_index + (b & inflate_mask[j])) * 3;

                        b = SharedUtils.URShift(b, (tree[tindex + 1]));
                        k -= (tree[tindex + 1]);

                        e = tree[tindex];

                        if (e == 0)
                        {
                            // literal
                            lit = tree[tindex + 2];
                            mode = LIT;
                            break;
                        }
                        if ((e & 16) != 0)
                        {
                            // length
                            get_Renamed = e & 15;
                            len = tree[tindex + 2];
                            mode = LENEXT;
                            break;
                        }
                        if ((e & 64) == 0)
                        {
                            // next table
                            need = e;
                            tree_index = tindex / 3 + tree[tindex + 2];
                            break;
                        }
                        if ((e & 32) != 0)
                        {
                            // end of block
//.........这里部分代码省略.........
开发者ID:gregsohl,项目名称:Cool_dotNet_Tools_Techniques_Libraries_Presentation,代码行数:101,代码来源:Inflate.cs

示例14: Init

 internal void Init(int bl, int bd, int[] tl, int tl_index, int[] td, int td_index, ZlibCodec z)
 {
     mode = START;
     lbits = (byte)bl;
     dbits = (byte)bd;
     ltree = tl;
     ltree_index = tl_index;
     dtree = td;
     dtree_index = td_index;
     tree = null;
 }
开发者ID:gregsohl,项目名称:Cool_dotNet_Tools_Techniques_Libraries_Presentation,代码行数:11,代码来源:Inflate.cs

示例15: Flush

        // copy as much as possible from the sliding window to the output area
        internal int Flush(ZlibCodec z, int r)
        {
            int n;
            int p;
            int q;

            // local copies of source and destination pointers
            p = z.NextOut;
            q = read;

            // compute number of bytes to copy as far as end of window
            n = (int)((q <= write ? write : end) - q);
            if (n > z.AvailableBytesOut)
                n = z.AvailableBytesOut;
            if (n != 0 && r == ZlibConstants.Z_BUF_ERROR)
                r = ZlibConstants.Z_OK;

            // update counters
            z.AvailableBytesOut -= n;
            z.TotalBytesOut += n;

            // update check information
            if (checkfn != null)
                z._Adler32 = check = Adler.Adler32(check, window, q, n);

            // copy as far as end of window
            Array.Copy(window, q, z.OutputBuffer, p, n);
            p += n;
            q += n;

            // see if more to copy at beginning of window
            if (q == end)
            {
                // wrap pointers
                q = 0;
                if (write == end)
                    write = 0;

                // compute bytes to copy
                n = write - q;
                if (n > z.AvailableBytesOut)
                    n = z.AvailableBytesOut;
                if (n != 0 && r == ZlibConstants.Z_BUF_ERROR)
                    r = ZlibConstants.Z_OK;

                // update counters
                z.AvailableBytesOut -= n;
                z.TotalBytesOut += n;

                // update check information
                if (checkfn != null)
                    z._Adler32 = check = Adler.Adler32(check, window, q, n);

                // copy
                Array.Copy(window, q, z.OutputBuffer, p, n);
                p += n;
                q += n;
            }

            // update pointers
            z.NextOut = p;
            read = q;

            // done
            return r;
        }
开发者ID:gregsohl,项目名称:Cool_dotNet_Tools_Techniques_Libraries_Presentation,代码行数:67,代码来源:Inflate.cs


注:本文中的Ionic.Zlib.ZlibCodec类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。