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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? reedsolomon.java

?? QR code是日本人開發的現在很流行的國際通用的二維條形碼
?? JAVA
字號:
/*  * INFO: This class based on RSCODE (http://sourceforge.net/projects/rscode/),  * 	     a open source Reed Solomon Encoder/Decoder written by Mr.Henry Minsky .  *       Because it was written in C, Yusuke Yanbe ported decoder part into Java. */package jp.sourceforge.qrcode.ecc;public class ReedSolomon {	//G(x)=a^8+a^4+a^3+a^2+1	int[] y;	int[] gexp = new int[512];	int[] glog = new int[256];	int NPAR;  //final int NPAR = 20;	int MAXDEG;	int[] synBytes;		/* The Error Locator Polynomial, also known as Lambda or Sigma. Lambda[0] == 1 */	 int[] Lambda;	/* The Error Evaluator Polynomial */	 int[] Omega;	/* local ANSI declarations */	/* error locations found using Chien's search*/	 int[] ErrorLocs = new int[256];	 int NErrors;	/* erasure flags */	 int[] ErasureLocs = new int[256];	 int NErasures = 0;	boolean correctionSucceeded = true;		public ReedSolomon(int[] source, int NPAR) {		initializeGaloisTables();		y = source;    		this.NPAR = NPAR;		MAXDEG = this.NPAR*2;		synBytes = new int[MAXDEG];		Lambda = new int[MAXDEG];		Omega = new int[MAXDEG];	}		void initializeGaloisTables() {	  int i, z;	  int pinit,p1,p2,p3,p4,p5,p6,p7,p8;	  pinit = p2 = p3 = p4 = p5 = p6 = p7 = p8 = 0;	  p1 = 1;			  gexp[0] = 1;	  gexp[255] = gexp[0];	  glog[0] = 0;			/* shouldn't log[0] be an error? */			  for (i = 1; i < 256; i++) {	    pinit = p8;	    p8 = p7;	    p7 = p6;	    p6 = p5;	    p5 = p4 ^ pinit;	    p4 = p3 ^ pinit;	    p3 = p2 ^ pinit;	    p2 = p1;	    p1 = pinit;	    gexp[i] = p1 + p2*2 + p3*4 + p4*8 + p5*16 + p6*32 + p7*64 + p8*128;	    gexp[i+255] = gexp[i];	  }			  for (i = 1; i < 256; i++) {	    for (z = 0; z < 256; z++) {	      if (gexp[z] == i) {				glog[i] = z;				break;	      }	    }	  }	}		/* multiplication using logarithms */	int gmult(int a, int b)	{	  int i,j;	  if (a==0 || b == 0) return (0);	  i = glog[a];	  j = glog[b];	  return (gexp[i+j]);	}				int ginv (int elt) 	{ 	  return (gexp[255-glog[elt]]);	}		void decode_data(int[] data)	{	  int i, j, sum;	  for (j = 0; j < MAXDEG;  j++) {	    sum	= 0;	    for (i = 0; i < data.length; i++) {	      sum = data[i] ^ gmult(gexp[j+1], sum);	    }	    synBytes[j]  = sum;	  }	}		public void correct() {//		return;		decode_data(y);		correctionSucceeded = true;		boolean hasError = false;		for (int i = 0; i < synBytes.length; i++) {			//System.out.println("SyndromeS"+String.valueOf(i) + " = " + synBytes[i]);			if (synBytes[i] != 0)				hasError = true;		}		if (hasError)			correctionSucceeded = correct_errors_erasures (y, y.length, 0, new int[1]);	}		public boolean isCorrectionSucceeded() {		return correctionSucceeded;	}	public int getNumCorrectedErrors() {		return NErrors;	}	/* From  Cain, Clark, "Error-Correction Coding For Digital Communications", pp. 216. */	void	Modified_Berlekamp_Massey ()	{		  int n, L, L2, k, d, i;	  int[] psi = new int[MAXDEG];	  int[] psi2 = new int[MAXDEG];		int[] D = new int[MAXDEG];	  int[] gamma = new int[MAXDEG];			  /* initialize Gamma, the erasure locator polynomial */	  init_gamma(gamma);	  /* initialize to z */	  copy_poly(D, gamma);	  mul_z_poly(D);			  copy_poly(psi, gamma);		  k = -1; L = NErasures;			  for (n = NErasures; n < 8; n++) {			    d = compute_discrepancy(psi, synBytes, L, n);				    if (d != 0) {				      /* psi2 = psi - d*D */	      for (i = 0; i < MAXDEG; i++) psi2[i] = psi[i] ^ gmult(d, D[i]);							      if (L < (n-k)) {		L2 = n-k;		k = n-L;		/* D = scale_poly(ginv(d), psi); */		for (i = 0; i < MAXDEG; i++) D[i] = gmult(psi[i], ginv(d));		L = L2;	      }					      /* psi = psi2 */	      for (i = 0; i < MAXDEG; i++) psi[i] = psi2[i];	    }				    mul_z_poly(D);	  }			  for(i = 0; i < MAXDEG; i++) Lambda[i] = psi[i];	  compute_modified_omega();			}	/* given Psi (called Lambda in Modified_Berlekamp_Massey) and synBytes,	   compute the combined erasure/error evaluator polynomial as 	   Psi*S mod z^4	  */	void	compute_modified_omega ()	{	  int i;	  int[] product = new int[MAXDEG*2];			  mult_polys(product, Lambda, synBytes);		  zero_poly(Omega);	  for(i = 0; i < NPAR; i++) Omega[i] = product[i];	}	/* polynomial multiplication */	void	mult_polys (int[] dst, int[] p1, int[] p2)	{	  int i, j;	  int[] tmp1 = new int[MAXDEG*2];			  for (i=0; i < (MAXDEG*2); i++) dst[i] = 0;			  for (i = 0; i < MAXDEG; i++) {	    for(j=MAXDEG; j<(MAXDEG*2); j++) tmp1[j]=0;				    /* scale tmp1 by p1[i] */	    for(j=0; j<MAXDEG; j++) tmp1[j]=gmult(p2[j], p1[i]);	    /* and mult (shift) tmp1 right by i */	    for (j = (MAXDEG*2)-1; j >= i; j--) tmp1[j] = tmp1[j-i];	    for (j = 0; j < i; j++) tmp1[j] = 0;				    /* add into partial product */	    for(j=0; j < (MAXDEG*2); j++) dst[j] ^= tmp1[j];	  }	}			/* gamma = product (1-z*a^Ij) for erasure locs Ij */	void	init_gamma (int[] gamma)	{	  int e;	  int[] tmp = new int[MAXDEG];			  zero_poly(gamma);	  zero_poly(tmp);	  gamma[0] = 1;			  for (e = 0; e < NErasures; e++) {	    copy_poly(tmp, gamma);	    scale_poly(gexp[ErasureLocs[e]], tmp);	    mul_z_poly(tmp);	    add_polys(gamma, tmp);	  }	}							void 	compute_next_omega (int d, int[] A, int[] dst, int[] src)	{	  int i;	  for ( i = 0; i < MAXDEG;  i++) {	    dst[i] = src[i] ^ gmult(d, A[i]);	  }	}			int	compute_discrepancy (int[] lambda, int[] S, int L, int n)	{	  int i, sum=0;			  for (i = 0; i <= L; i++) 	    sum ^= gmult(lambda[i], S[n-i]);	  return (sum);	}	/********** polynomial arithmetic *******************/	void add_polys (int[] dst, int[] src) 	{	  int i;	  for (i = 0; i < MAXDEG; i++) dst[i] ^= src[i];	}	void copy_poly (int[] dst, int[] src) 	{	  int i;	  for (i = 0; i < MAXDEG; i++) dst[i] = src[i];	}	void scale_poly (int k, int[] poly) 	{		  int i;	  for (i = 0; i < MAXDEG; i++) poly[i] = gmult(k, poly[i]);	}	void zero_poly (int[] poly) 	{	  int i;	  for (i = 0; i < MAXDEG; i++) poly[i] = 0;	}	/* multiply by z, i.e., shift right by 1 */	void mul_z_poly (int[] src)	{	  int i;	  for (i = MAXDEG-1; i > 0; i--) src[i] = src[i-1];	  src[0] = 0;	}	/* Finds all the roots of an error-locator polynomial with coefficients	 * Lambda[j] by evaluating Lambda at successive values of alpha. 	 * 	 * This can be tested with the decoder's equations case.	 */	void Find_Roots ()	{	  int sum, r, k;		  NErrors = 0;	  	  for (r = 1; r < 256; r++) {	    sum = 0;	    /* evaluate lambda at r */	    for (k = 0; k < NPAR+1; k++) {	      sum ^= gmult(gexp[(k*r)%255], Lambda[k]);	    }	    if (sum == 0) 	      { 		ErrorLocs[NErrors] = (255-r); NErrors++; 		//if (DEBUG) fprintf(stderr, "Root found at r = %d, (255-r) = %d\n", r, (255-r));	      }	  }	}	/* Combined Erasure And Error Magnitude Computation 	 * 	 * Pass in the codeword, its size in bytes, as well as	 * an array of any known erasure locations, along the number	 * of these erasures.	 * 	 * Evaluate Omega(actually Psi)/Lambda' at the roots	 * alpha^(-i) for error locs i. 	 *	 * Returns 1 if everything ok, or 0 if an out-of-bounds error is found	 *	 */	boolean correct_errors_erasures (int[] codeword, 				 int csize,				 int nerasures,				 int[] erasures)	{	  int r, i, j, err;	  /* If you want to take advantage of erasure correction, be sure to	     set NErasures and ErasureLocs[] with the locations of erasures. 	     */	  NErasures = nerasures;	  for (i = 0; i < NErasures; i++) ErasureLocs[i] = erasures[i];	  Modified_Berlekamp_Massey();	  Find_Roots();	  	  if ((NErrors <= NPAR) || NErrors > 0) { 	    /* first check for illegal error locs */	    for (r = 0; r < NErrors; r++) {	      if (ErrorLocs[r] >= csize) {		//if (DEBUG) fprintf(stderr, "Error loc i=%d outside of codeword length %d\n", i, csize);	    	  //System.out.println("Error loc i="+ErrorLocs[r]+" outside of codeword length"+csize);	    	  return false;	      }	    }	    for (r = 0; r < NErrors; r++) {	      int num, denom;	      i = ErrorLocs[r];	      /* evaluate Omega at alpha^(-i) */	      num = 0;	      for (j = 0; j < MAXDEG; j++) 		num ^= gmult(Omega[j], gexp[((255-i)*j)%255]);	      	      /* evaluate Lambda' (derivative) at alpha^(-i) ; all odd powers disappear */	      denom = 0;	      for (j = 1; j < MAXDEG; j += 2) {		denom ^= gmult(Lambda[j], gexp[((255-i)*(j-1)) % 255]);	      }	      	      err = gmult(num, ginv(denom));	      //if (DEBUG) fprintf(stderr, "Error magnitude %#x at loc %d\n", err, csize-i);	      	      codeword[csize-i-1] ^= err;	    }	    //for (int p = 0; p < codeword.length; p++)	    //	System.out.println(codeword[p]);	    //System.out.println("correction succeeded");	    return true;	  }	  else {	    //if (DEBUG && NErrors) fprintf(stderr, "Uncorrectable codeword\n");    	//System.out.println("Uncorrectable codeword");	    return false;	  }	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美一区二区三区国产精品| 国产乱人伦偷精品视频免下载 | 国产一区二区三区国产| 欧美国产精品久久| 欧美美女bb生活片| 972aa.com艺术欧美| 狠狠色综合色综合网络| 亚洲va国产va欧美va观看| 国产精品久久久久四虎| 久久女同互慰一区二区三区| 91精品国产综合久久香蕉的特点| 色av一区二区| 精品视频999| 色视频成人在线观看免| 一本色道久久综合亚洲aⅴ蜜桃| 91麻豆精品国产91久久久久久久久| 欧美一级在线视频| 9191成人精品久久| 国产精品人人做人人爽人人添| 久久久久99精品一区| 亚洲一区二区三区视频在线| 午夜国产不卡在线观看视频| 日韩和欧美的一区| 精品在线你懂的| 成人亚洲一区二区一| 91在线视频18| 亚洲国产精品成人久久综合一区 | 国产成人丝袜美腿| 国产成人精品三级| 日韩精品专区在线影院重磅| 久久精品网站免费观看| 成人欧美一区二区三区黑人麻豆 | 国产精品系列在线观看| 精品久久久久久久久久久久包黑料 | 亚洲综合免费观看高清完整版| 国产ts人妖一区二区| 一本高清dvd不卡在线观看 | 成人黄色免费短视频| 一本大道综合伊人精品热热| 日韩美女啊v在线免费观看| 亚洲国产成人tv| 国产高清久久久久| 国产欧美日韩三级| 免费的成人av| 欧美综合一区二区三区| 中文字幕不卡的av| 99久久夜色精品国产网站| 一区二区三区小说| 国产一区二区三区在线观看免费视频| 日韩免费在线观看| 春色校园综合激情亚洲| 夜夜精品浪潮av一区二区三区| 欧美三区在线观看| 久久国产精品99精品国产| 欧美伊人久久久久久久久影院 | 亚洲人xxxx| 美女网站一区二区| 成人免费毛片片v| 一区二区三区久久| 精品国内片67194| 免费在线观看日韩欧美| 国产欧美日韩在线| 欧美日韩在线播| 国产1区2区3区精品美女| 亚洲综合丝袜美腿| 亚洲一区二区三区小说| 欧美哺乳videos| 国产一区二区久久| 亚洲成av人片一区二区梦乃| 久久男人中文字幕资源站| 欧美日韩激情一区二区| 国产欧美日韩在线| 欧美不卡123| 日韩一区国产二区欧美三区| 久久精品久久精品| 亚洲狠狠爱一区二区三区| 精品成a人在线观看| 欧美va亚洲va| 欧美一区二区免费视频| 欧美一区二区三区四区视频| 欧美性大战xxxxx久久久| 欧美在线观看视频一区二区| 色综合激情久久| 色素色在线综合| 色999日韩国产欧美一区二区| 国产精品99久久久| 成人av电影在线观看| 不卡的av电影| 91视频国产资源| 日韩高清在线观看| 亚洲欧美另类小说| 夜夜夜精品看看| 日本不卡视频在线观看| 国内成+人亚洲+欧美+综合在线| 日本成人在线看| 国产一区二区三区四区五区美女| 国产精品88av| 在线视频一区二区三区| 69久久99精品久久久久婷婷 | 精品国产在天天线2019| 精品国产免费一区二区三区四区| 中文字幕的久久| 亚洲不卡av一区二区三区| 国内外成人在线视频| 91美女视频网站| 久久久久久久久蜜桃| 亚洲免费av在线| 国产高清在线精品| 在线观看视频一区| 久久精品亚洲精品国产欧美kt∨| 亚洲精品视频一区二区| 中文字幕在线免费不卡| 麻豆视频一区二区| 色综合中文综合网| 91在线观看地址| 国产无一区二区| 蜜臀久久99精品久久久久久9 | 国产精品色呦呦| 久久99精品国产麻豆不卡| 欧美三级资源在线| 一区二区三区色| 91视频国产资源| 亚洲免费在线电影| 色综合久久综合| 亚洲人成网站精品片在线观看| 国产a久久麻豆| 日本一区二区高清| 国产成人精品免费在线| 久久精品亚洲精品国产欧美 | 91精品国产黑色紧身裤美女| 亚洲免费观看高清| 91免费看片在线观看| 怡红院av一区二区三区| 欧美日韩国产综合久久| 亚洲国产日韩a在线播放性色| 91亚洲永久精品| 亚欧色一区w666天堂| 日韩视频不卡中文| 国产毛片精品视频| 亚洲日本在线看| 欧美精品乱人伦久久久久久| 捆绑调教一区二区三区| 久久久久久久av麻豆果冻| 9久草视频在线视频精品| 日韩视频123| 不卡一区中文字幕| 亚洲综合男人的天堂| 日韩欧美国产不卡| 成人精品国产一区二区4080| 亚洲欧美福利一区二区| 日韩一区二区三区精品视频| 99久久婷婷国产| 国产精品正在播放| 日韩影院精彩在线| 国产精品剧情在线亚洲| 欧美一区二区三区视频在线观看| 福利一区二区在线| 全部av―极品视觉盛宴亚洲| 亚洲视频一区二区在线观看| 精品国产99国产精品| 欧美日韩视频第一区| 色欧美日韩亚洲| 成人小视频免费观看| 久久 天天综合| 婷婷夜色潮精品综合在线| 亚洲欧美日韩中文字幕一区二区三区| 精品裸体舞一区二区三区| 日韩一区二区三区在线视频| 欧美日韩一级二级| 欧美日韩一卡二卡三卡| 欧美亚洲国产一区在线观看网站| 99久久99精品久久久久久| 成人福利视频在线看| 成人少妇影院yyyy| 成人免费视频一区| 91影视在线播放| 一本到不卡免费一区二区| 欧美性大战久久久久久久蜜臀| 色婷婷亚洲综合| 欧美日韩亚洲另类| 91精品婷婷国产综合久久竹菊| 欧美乱妇20p| 精品少妇一区二区三区在线视频| 久久你懂得1024| 最新高清无码专区| 视频一区二区三区在线| 久久精品国产网站| a亚洲天堂av| 91精品婷婷国产综合久久竹菊| 国产午夜精品在线观看| 亚洲女与黑人做爰| 日韩av在线发布| 国产夫妻精品视频| 欧美视频你懂的| 久久免费午夜影院| 日日夜夜精品视频免费| 粉嫩在线一区二区三区视频| 欧美综合欧美视频| 国产精品成人一区二区三区夜夜夜| 亚洲图片欧美色图|