⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mysystem.java

📁 利用JAVA 实现的 霍夫曼编码压缩解压缩算法
💻 JAVA
字号:
package compress;

public class MySystem
	{
		MyMenu MM;
		MyData MD=new MyData();
		MyBTree MBCT;
		MyBTree MBHT;
		MyBOrderTree MBOT=new MyBOrderTree();
		MyHuffmanTree MHT=new MyHuffmanTree();
		public String number="";
		public String huffman="";
		public String texthuffman="";
		public String textchar="";
		public int[] out;
		public String outstring;
		public int end;
		public MySystem()
			{
				
			}
		public void RunCompress()
			{
				MD.readNewFile();
				MD.StatNewFile();
				MyHuffmanTree[] HT=new MyHuffmanTree[MD.getW().length*2];
				for(int i=0;i<MD.getW().length*2;i++)
					HT[i]=new MyHuffmanTree();
				MHT.CreatHuffmanTree(HT,MD.getW());
				MBCT=new MyBTree(MD.getChartypefinal(1),MHT.getHC(1));
				MBOT.creatBCTree(MBCT,MBCT,MD.getChartypefinal(),MHT.getHC(),2);
			}
		public void RunDecompress()
			{
				MD.readCompressFile();
				MD.StatCompressFile();
				MyHuffmanTree[] HT=new MyHuffmanTree[MD.getW().length*2];
				for(int i=0;i<MD.getW().length*2;i++)
					HT[i]=new MyHuffmanTree();
				MHT.CreatHuffmanTree(HT,MD.getW());
				MBHT=new MyBTree(null);
				for(int i=1;i<=MD.getW().length;i++)
					MBOT.creatBHTree(MBHT,MD.getChartypefinal(i),MHT.getHC(i),0);
				end=0;
				for(int i=0;i<MD.endstring.length();i++)
					end=end*10+MD.endstring.charAt(i)-48;
				int j=0;
				for(int i=0;i<MD.getHuffman().length();i++)
					if(MD.getHuffman().charAt(i)==' ') j++;
				out=new int[j];
				for(int i=0;i<j;i++)
					out[i]=0;
				for(int i=0,wl=0,zf;i<MD.getHuffman().length();)
					{
						zf=0;
						if(MD.getHuffman().charAt(i)=='-')
							{
								zf=1;
								i++;
							}
						while(MD.getHuffman().charAt(i)!=' ')
							{
								out[wl]=out[wl]*10+MD.getHuffman().charAt(i)-48;
								i++;
							}
						if(zf==1)
							out[wl]=-out[wl];
						wl++;
						i++;
					}
				this.resethuffman(out,end);
			}
		public void outhuffman()
			{
				huffman="";
				for(int i=1;i<MD.getChartypefinal().length;i++)
				{
				huffman=huffman+MD.getChartypefinal(i)+":";
				System.out.print(MD.getChartypefinal(i));
				System.out.print(":");
				for(int j=0;j<MHT.getHC(i).length;j++)
					{
					huffman=huffman+MHT.getHC(i,j);
					System.out.print(MHT.getHC(i,j));
					}
				huffman=huffman+" ";
				System.out.println();
				}
			}
		public void outnumber()
			{
				number="";
				for(int i=1;i<MD.getChartypefinal().length;i++)
					{
					number=number+MD.getChartypefinal(i)+":"+MD.getW(i-1)+" ";
					System.out.print(MD.getChartypefinal(i));
					System.out.print(":");
					System.out.print(MD.getW(i-1));
					System.out.println();
					}
			}
		public void changetohuffman()
			{
				texthuffman="";
				for(int i=0;i<MD.getArticle().length();i++)
					{
						MBOT.charfind(MBCT,MD.getArticle().charAt(i));
						for(int j=0;j<MBOT.keyhuffman.length;j++)
							texthuffman =texthuffman +MBOT.keyhuffman[j];
					}
				System.out.println(texthuffman);
				out=new int[(texthuffman.length()-1)/32+1];
				end=texthuffman.length()%32;
				for(int i=0;i<out.length;i++)
					{
						out[i]=0;
					}
				for(int i=0,j=0,a;i<texthuffman.length();i++)
					{
						a=texthuffman.charAt(i)-48;
						out[j]=out[j]|a;
						if((i+1)%32==0) j++;
						else out[j]<<=1;
					}
				if(end!=0)
					out[texthuffman.length()/32]<<=32-end-1;
				outstring="";
				for(int i=0;i<out.length;i++)
					{
						outstring=outstring+out[i]+" ";
					}
			}
		public void resethuffman(int[] out,int end)
			{
				texthuffman="";
				for(int i=0,j=0,num;i<(out.length-1)*32;i++)
					{
						num=out[j]&0x80000000;
						if(num==0)
							texthuffman=texthuffman+"0";
						else texthuffman=texthuffman+"1";
						out[j]<<=1;
						if((i+1)%32==0) j++;
					}
				if(end==0)
					{
						for(int i=0,num;i<32;i++)
							{
								num=out[out.length-1]&0x80000000;
								if(num==0)
									texthuffman=texthuffman+"0";
								else texthuffman=texthuffman+"1";
								out[out.length-1]<<=1;
							}
					}
				else 
					{
						for(int i=0,num;i<end;i++)
							{
								num=out[out.length-1]&0x80000000;
								if(num==0)
									texthuffman=texthuffman+"0";
								else texthuffman=texthuffman+"1";
								out[out.length-1]<<=1;
							}
					}
			}
		public void changetotext()
			{
				textchar="";
				String s;
				for(int i=0;i<texthuffman.length();)
					{
						s="";
						while (MBOT.keychar==null)
							{
								s=s+texthuffman.charAt(i);
								MBOT.huffmanfind(MBHT,s,0);
								i++;
							}
						textchar=textchar+MBOT.keychar;
						MBOT.keychar=null;
					}
				System.out.println(textchar);
			}
		public String toString(String s)
			{
				return s;
			}
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -