现在的位置: 首页 > 综合 > 正文

关于简单数据压缩的算法

2018年07月28日 ⁄ 综合 ⁄ 共 866字 ⁄ 字号 评论关闭
public static byte[] compressData(){
		//数据压缩的算法
		byte[] data=new byte[]{12,56,56,23,82,82,82,82,89,91,90,90,90};//12,56,56,23,0,4,82,89,91,0,3,90
		byte[] tempData=new byte[data.length];
		int i=0,temp=0,cindex=0,s=data.length;
		for(;i<data.length;i++){
			for(int j=i;j<data.length;j++){
				if(data[i]==data[j]){
					temp++;
					s--;
					if(j==data.length-1){
						if(temp>2){
							tempData[cindex]=0;
							tempData[cindex+1]=(byte)(temp);
							tempData[cindex+2]=data[i];
							cindex=cindex+3;
							s+=3;
						}else{
							for(int k=0;k<temp;k++){
								tempData[cindex+k]=data[i];
							}
							cindex=cindex+temp;
							s+=temp;
						}
						i=j;
						break;
					}
					continue;
				}else{
					if(temp>2){
						tempData[cindex]=0;
						tempData[cindex+1]=(byte)(temp);
						tempData[cindex+2]=data[i];
						cindex=cindex+3;
						s+=3;
					}else{
						for(int k=0;k<temp;k++){
							tempData[cindex+k]=data[i];
						}
						cindex=cindex+temp;
						s+=temp;
					}
					i=j-1;
					temp=0;
					break;
				}
				
			}
		}
		byte[] compressData=new byte[s];
		System.arraycopy(tempData, 0, compressData, 0, s);
		return compressData;
	}

谁有更好的写法,共享一下,谢谢。

抱歉!评论已关闭.