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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? lzwcompression.cs

?? The LZW compression class i mplemented as a fixed length code which you can specify, the huffman alg
?? CS
字號(hào):
/*
	LZWCompression.cs
	Author: Adrian Huang
	FOR RESEARCH OR STUDY ONLY, DO NOT USE THE CODE FOR COMMERCIAL

	I'll appreciate you posting question and bug to me
	email: sanyuexx@hotmail.com
	web	  :	http://www.cnblogs.com/dah
*/

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Diagnostics;

namespace Adrian.Compression
{
    public class LZWCompression : Compression
    {
        protected class CodeTable
        {
            private int _codeLength;
            private Dictionary<string, int> _table = new Dictionary<string, int>();

            public CodeTable(int codeLength)
            {
                _codeLength = codeLength;
            }

            public void FillChars()
            {
                for (int a = 0; a < 256; a++)
                {
                    AddString(((char)a).ToString());
                }
            }

            public bool Contains(string str)
            {
                return _table.ContainsKey(str);
            }

            public void AddString(string str)
            {
                if (_table.ContainsKey(str))
                {
                    throw new Exception("Already exists!");
                }
                if (_table.Count >= MaxCode + 1)
                {
                    throw new Exception("Code table is full!");
                }
                _table[str] = _table.Count;
            }

            public int GetCode(string str)
            {
                return _table[str];
            }

            private int MaxCode // legal code range: 0 ~ MaxCode
            {
                get { return (1 << (8 * _codeLength)) - 1; }
            }

            public bool HasSpace
            {
                get { return _table.Count < MaxCode + 1; }
            }
        }

        private int _codeLength = 2;

        public LZWCompression() { }
        public LZWCompression(int codeLength)
        {
            if (_codeLength < 1)
            {
                throw new Exception("codeLength must be greater than 0");
            }
            _codeLength = codeLength;
        }

        public override void Compress(BinaryReader reader, BinaryWriter writer)
        {
            CodeTable tb = new CodeTable(_codeLength);
            tb.FillChars();
            char firstChar = (char)reader.ReadByte();
            string match = firstChar.ToString();
            int lastPercent = 0;
            while (reader.BaseStream.Position < reader.BaseStream.Length)
            {
                lastPercent = RaiseEvent(reader, lastPercent);
                char nextChar = (char)reader.ReadByte();
                string nextMatch = match + nextChar.ToString();
                if (tb.Contains(nextMatch))
                {
                    if (tb.HasSpace)
                    {
                        match = nextMatch;
                    }
                    else
                    {
                        WriteCode(writer, tb.GetCode(nextMatch));
                        if (reader.BaseStream.Position < reader.BaseStream.Length)
                        {
                            match = ((char)reader.ReadByte()).ToString();
                        }
                        else
                        {
                            break;
                        }
                    }
                }
                else
                {
                    WriteCode(writer, tb.GetCode(match));
                    if (tb.HasSpace)
                    {
                        tb.AddString(nextMatch);
                    }
                    match = nextChar.ToString();
                }
                Debug.Assert(writer.BaseStream.Position % 2 == 0);
            }
            WriteCode(writer, tb.GetCode(match));
            RaiseFinishEvent();
        }

        public override void Decompress(BinaryReader reader, BinaryWriter writer)
        {
            List<string> list = new List<string>();
            for (int i = 0; i < 256; i++)
            {
                list.Add(((char)i).ToString());
            }
            byte firstByte = (byte)ReadCode(reader);
            string match = ((char)firstByte).ToString();
            writer.Write(firstByte);
            int lastPercent = 0;
            while (reader.BaseStream.Position < reader.BaseStream.Length)
            {
                lastPercent = RaiseEvent(reader, lastPercent);
                int nextCode = ReadCode(reader);
                string nextMatch = null;
                if (nextCode < list.Count)
                {
                    nextMatch = list[nextCode];
                }
                else
                {
                    nextMatch = match + match[0];
                }
                foreach(char c in nextMatch)
                {
                    writer.Write((byte)c);
                }
                list.Add(match + nextMatch[0]);
                match = nextMatch;
            }
            RaiseFinishEvent();
        }

        private void WriteCode(BinaryWriter writer, int code)
        {
            int shift = 0;
            for (int i = 0; i < _codeLength; i++)
            {
                // write lower byte first
                byte b = (byte)((code >> shift) & 0xFF); 
                writer.Write(b);
                shift += 8;
            }
        }

        private int ReadCode(BinaryReader reader)
        {
            int code = 0;
            int shift = 0;
            for (int i = 0; i < _codeLength; i++)
            {
                // read lower byte first
                code += (reader.ReadByte() << shift);
                shift += 8; 
            }
            return code;
        }

        public int CodeLength
        {
            get { return _codeLength; }
        }
    }
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲激情五月婷婷| 一区二区三区91| 欧美色图天堂网| 国产精品1024久久| 亚洲成人免费在线| 成人免费一区二区三区视频| 精品少妇一区二区三区在线视频| 99精品国产一区二区三区不卡| 男女男精品视频网| 亚洲一区在线观看视频| 国产精品色呦呦| 2022国产精品视频| 欧美一区二区在线不卡| 色94色欧美sute亚洲13| 成人综合婷婷国产精品久久蜜臀 | 亚洲成人免费av| 久久老女人爱爱| 91精品国产综合久久久久久久| 色婷婷av一区| 不卡的av电影在线观看| 国产成人在线观看免费网站| 日本三级亚洲精品| 午夜精品成人在线视频| 亚洲视频一区在线观看| 国产精品免费视频观看| 国产午夜精品福利| 久久老女人爱爱| 久久综合成人精品亚洲另类欧美| 欧美日韩久久一区| 欧美日韩视频在线第一区| 色综合久久综合| 一本色道**综合亚洲精品蜜桃冫| 成人蜜臀av电影| 成人91在线观看| 不卡av免费在线观看| jlzzjlzz欧美大全| jlzzjlzz欧美大全| 一本色道a无线码一区v| 色综合亚洲欧洲| 色老汉一区二区三区| 一本色道亚洲精品aⅴ| 色哟哟日韩精品| 欧美中文字幕一区| 欧美日韩综合不卡| 91精品国产综合久久久久| 欧美一区二区三区人| 日韩精品一区二区三区中文精品 | 欧美影片第一页| 欧洲一区在线电影| 欧美精品v国产精品v日韩精品| 欧美日韩一区二区在线观看| 欧美精品一二三| 日韩欧美第一区| 久久精品亚洲麻豆av一区二区| 国产欧美日韩精品一区| 中文字幕一区二区三区av | 麻豆国产精品777777在线| 麻豆精品国产传媒mv男同| 国产精品亚洲一区二区三区妖精 | 欧美日韩国产成人在线免费| 欧美精选一区二区| 精品久久一区二区三区| 久久精品一级爱片| 亚洲另类色综合网站| 午夜精品久久久久影视| 激情综合五月婷婷| av一区二区三区黑人| 欧美三级日韩在线| 精品美女被调教视频大全网站| 青青草精品视频| 国产精品夜夜嗨| 91国产成人在线| 日韩欧美123| 国产精品电影院| 日韩高清一区二区| 国产精品 欧美精品| 欧洲精品中文字幕| 26uuuu精品一区二区| 亚洲精品伦理在线| 久久99精品久久久久久久久久久久 | 久久综合久久99| 日韩美女啊v在线免费观看| 亚洲国产美女搞黄色| 国产精品正在播放| 欧美综合视频在线观看| 久久久久久久综合狠狠综合| 一区二区三区成人在线视频| 久久国产精品99久久人人澡| 91最新地址在线播放| 欧美大胆一级视频| 一区二区三区四区国产精品| 国产一区欧美日韩| 欧美三区免费完整视频在线观看| 久久久久久一级片| 天天综合色天天综合| av亚洲精华国产精华精华| 欧美一级艳片视频免费观看| 亚洲欧美日韩小说| 国产精品123| 精品日韩一区二区三区 | 亚洲国产一区视频| 成人一区二区三区在线观看| 91精品国产日韩91久久久久久| 国产精品女人毛片| 久久99久久精品| 欧美区一区二区三区| 亚洲欧美偷拍卡通变态| 粉嫩高潮美女一区二区三区| 91精品久久久久久久99蜜桃| 亚洲精品欧美激情| 风间由美一区二区av101| 亚洲精品水蜜桃| 成人国产精品免费观看| 精品国产伦一区二区三区观看体验| 亚洲电影你懂得| 色综合一个色综合| 亚洲欧美在线视频| 国产99一区视频免费| 精品久久一区二区| 男女男精品视频| 7777精品伊人久久久大香线蕉的 | k8久久久一区二区三区| 国产亚洲成aⅴ人片在线观看| 久久av中文字幕片| 日韩一级二级三级| 日韩高清在线一区| 欧美精品黑人性xxxx| 亚洲成人自拍偷拍| 欧美网站一区二区| 亚洲成人精品一区二区| 欧美三级欧美一级| 亚洲图片欧美综合| 欧美日韩日本视频| 午夜欧美大尺度福利影院在线看 | 欧亚一区二区三区| 一区二区三区资源| 欧美在线免费视屏| 亚洲国产成人porn| 欧美日韩久久久久久| 亚洲二区在线视频| 欧美精品亚洲一区二区在线播放| 亚洲成人动漫一区| 欧美一区二区三区视频| 老司机精品视频线观看86| 91精品国产一区二区三区香蕉 | 色妞www精品视频| 一级做a爱片久久| 欧美群妇大交群中文字幕| 午夜电影网一区| 日韩欧美视频一区| 国产精品18久久久久久久久久久久 | 国产精品网站在线| 91网上在线视频| 亚洲成人精品一区| 日韩午夜激情av| 国产成人精品亚洲777人妖| 中文文精品字幕一区二区| 972aa.com艺术欧美| 亚洲一二三四区不卡| 日韩欧美一级精品久久| 国产a精品视频| 洋洋av久久久久久久一区| 7777精品伊人久久久大香线蕉的 | 99精品视频一区| 色一区在线观看| 亚洲一区二区三区四区在线观看| 欧美日韩精品一区二区三区蜜桃| 麻豆精品久久精品色综合| 欧美国产日韩精品免费观看| 91黄色免费版| 久久国产精品72免费观看| 中文av一区特黄| 欧美日韩另类一区| 国产精品一区二区黑丝| 亚洲一区影音先锋| 久久在线观看免费| 色偷偷88欧美精品久久久| 日韩1区2区3区| 中文字幕一区二区三中文字幕| 欧美系列日韩一区| 国产精品亚洲一区二区三区妖精 | 久久众筹精品私拍模特| 91麻豆国产福利精品| 久久精品99国产精品日本| 国产精品久久久久三级| 6080午夜不卡| 91在线观看地址| 国产一区亚洲一区| 一区二区三区欧美视频| 久久久久国产精品麻豆| 精品视频在线免费| 成人激情文学综合网| 男女性色大片免费观看一区二区| 国产精品二三区| 久久青草欧美一区二区三区| 欧美日韩中文国产| 91网页版在线| 国产91对白在线观看九色| 免费观看成人av| 亚洲福利一二三区|