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

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

?? rsdecode.java

?? QR code是日本人開發的現在很流行的國際通用的二維條形碼
?? JAVA
字號:
package jp.sourceforge.reedsolomon;/** * タイトル: RSコード?デコーダ * * @author Masayuki Miyazaki * http://sourceforge.jp/projects/reedsolomon/ */public class RsDecode {	public static final int RS_PERM_ERROR = -1;	public static final int RS_CORRECT_ERROR = -2;	private static final Galois galois = Galois.getInstance();	private int npar;	public RsDecode(int npar) {		this.npar = npar;	}	/**	 * Modified Berlekamp-Massey	 *	 * @param sigma int[]	 *		σ(z)格納用配列、最大npar/2 + 2個の領域が必要	 * 		σ0,σ1,σ2, ... σ<jisu>	 * @param omega int[]	 *		ω(z)格納用配列、最大npar/2 + 1個の領域が必要	 *		ω0,ω1,ω2, ... ω<jisu-1>	 * @param syn int[]	 *		シンドローム配列	 * 		s0,s1,s2, ... s<npar-1>	 * @return int	 * 		>= 0: σの次數	 * 		< 0: エラー	 */	public int calcSigmaMBM(int[] sigma, int[] omega, int[] syn) {		int[] sg0 = new int[npar];		int[] sg1 = new int [npar];		sg0[1] = 1;		sg1[0] = 1;		int jisu0 = 1;		int jisu1 = 0;		int m = -1;		for(int n = 0; n < npar; n++) {			// 判別式を計算			int d = syn[n];			for(int i = 1; i <= jisu1; i++) {				d ^= galois.mul(sg1[i], syn[n - i]);			}			if(d != 0) {				int logd = galois.toLog(d);				int[] wk = new int[npar];				for(int i = 0; i <= n; i++) {					wk[i] = sg1[i] ^ galois.mulExp(sg0[i], logd);				}				int js = n - m;				if(js > jisu1) {					m = n - jisu1;					jisu1 = js;					if(jisu1 > npar / 2) {						return -1;				// σの次數がnpar / 2を超えたらエラー					}					for(int i = 0; i <= jisu0; i++) {						sg0[i] = galois.divExp(sg1[i], logd);					}					jisu0 = jisu1;				}				sg1 = wk;			}			System.arraycopy(sg0, 0, sg0, 1, Math.min(sg0.length - 1, jisu0));			sg0[0] = 0;			jisu0++;		}		galois.mulPoly(omega, sg1, syn);		System.arraycopy(sg1, 0, sigma, 0, Math.min(sg1.length, sigma.length));		return jisu1;	}	/**	 * チェン探索により誤り位置を求める	 *		σ(z) = 0の解を探索する	 *		ただし、探索はデータ長以內の解のみで	 *		jisu個の解が見つからなければ、エラーとする	 * @param pos int[]	 * 		誤り位置格納用配列、jisu個の領域が必要	 * @param n int	 * 		データ長	 * @param jisu int	 * 		σの次數	 * @param sigma int[]	 * 		σ0,σ1,σ2, ... σ<jisu>	 * @return int	 *		0: 正常終了	 *		< 0: エラー	 */	private int chienSearch(int[] pos, int n, int jisu, int[] sigma) {		/*		 * σ(z) = (1-α^i*z)(1-α^j*z)(1-α^k*z)		 *       = 1 + σ1z + σ2z^2 +...		 * σ1 = α^i + α^j + α^k		 * 上記の性質を利用して、プチ最適化		 * last = σ1から、見つけた解を次々と引いていくことにより、最後の解はlastとなる		 */		int last = sigma[1];		if(jisu == 1) {			// 次數が1ならば、lastがその解である			if(galois.toLog(last) >= n) {				return RS_CORRECT_ERROR;	// 範囲外なのでエラー			}			pos[0] = last;			return 0;		}		int posIdx = jisu - 1;		// 誤り位置格納用インデックス		for(int i = 0; i < n; i++) {			/*			 * σ(z)の計算			 * w を1(0乗の項)に初期化した後、殘りの項<1..jisu>を加算			 * z = 1/α^i = α^Iとすると			 * σ(z) = 1 + σ1α^I + σ2(α^I)^2 + σ3(α^I)^3 + ... + σ<jisu>/(α^I)^<jisu>			 *       = 1 + σ1α^I + σ2α^(I*2) + σ3α^(I*3) + ... + σ<jisu>α^(I*<jisu>)			 */			int z = 255 - i;					// z = 1/α^iのスカラー			int wk = 1;			for(int j = 1; j <= jisu; j++) {				wk ^= galois.mulExp(sigma[j], (z * j) % 255);			}			if(wk == 0) {				int pv = galois.toExp(i);		// σ(z) = 0の解				last ^=  pv;					// lastから今見つかった解を引く				pos[posIdx--] = pv;				if(posIdx == 0) {					// 殘りが一つならば、lastがその解である					if(galois.toLog(last) >= n) {						return RS_CORRECT_ERROR;	// 最後の解が範囲外なのでエラー					}					pos[0] = last;					return 0;				}			}		}		// 探索によりデータ長以內に、jisu個の解が見つからなかった		return RS_CORRECT_ERROR;	}	/**	 * Forney法で誤り訂正を行う	 *		σ(z) = (1-α^i*z)(1-α^j*z)(1-α^k*z)	 *		σ'(z) = α^i * (1-α^j*z)(1-α^k*z)...	 *			   + α^j * (1-α^i*z)(1-α^k*z)...	 *			   + α^k * (1-α^i*z)(1-α^j*z)...	 *		ω(z) = (E^i/(1-α^i*z) + E^j/(1-α^j*z) + ...) * σ(z)	 *			  = E^i*(1-α^j*z)(1-α^k*z)...	 *			  + E^j*(1-α^i*z)(1-α^k*z)...	 *			  + E^k*(1-α^i*z)(1-α^j*z)...	 *		∴ E^i = α^i * ω(z) / σ'(z)	 * @param data int[]	 *		入力データ配列	 * @param length int	 *		入力データ長さ	 * @param jisu int	 *		σの次數	 * @param pos int[]	 *		誤り位置配列	 * @param sigma int[]	 *		σ0,σ1,σ2, ... σ<jisu>	 * @param omega int[]	 *		ω0,ω1,ω2, ... ω<jisu-1>	 */	private void doForney(int[] data, int length, int jisu, int[] pos, int[] sigma, int[] omega) {		for(int i = 0; i < jisu; i++) {			int ps = pos[i];			int zlog = 255 - galois.toLog(ps);					// zのスカラー			// ω(z)の計算			int ov = omega[0];			for(int j = 1; j < jisu; j++) {				ov ^= galois.mulExp(omega[j], (zlog * j) % 255);		// ov += ωi * z^j			}			// σ'(z)の値を計算(σ(z)の形式的微分)			int dv = sigma[1];			for(int j = 2; j < jisu; j += 2) {				dv ^= galois.mulExp(sigma[j + 1], (zlog * j) % 255);	// dv += σ<j+1> * z^j			}			/*			 * 誤り訂正 E^i = α^i * ω(z) / σ'(z)			 * 誤り位置の範囲はチェン探索のときに保証されているので、			 * ここではチェックしない			 */			data[galois.toPos(length, ps)] ^= galois.mul(ps, galois.div(ov, dv));		}	}	/**	 * RSコードのデコード	 *	 * @param data int[]	 *		入力データ配列	 * @param length int	 * 		パリティを含めたデータ長	 * @param noCorrect boolean	 * 		チェックのみで訂正は行わない	 * @return int	 * 		0: エラーなし	 * 		> 0: 戻り値個の誤りを訂正した	 * 		< 0: 訂正不能	 */	public int decode(int[] data, int length, boolean noCorrect) {		if(length < npar || length > 255) {			return RS_PERM_ERROR;		}		// シンドロームを計算		int[] syn = new int[npar];		if(galois.calcSyndrome(data, length, syn)) {			return 0;		// エラー無し		}		// シンドロームよりσとωを求める		int[] sigma = new int[npar / 2 + 2];		int[] omega = new int[npar / 2 + 1];		int jisu = calcSigmaMBM(sigma, omega, syn);		if(jisu <= 0) {			return RS_CORRECT_ERROR;		}		// チェン探索により誤り位置を求める		int[] pos = new int[jisu];		int r = chienSearch(pos, length, jisu, sigma);		if(r < 0) {			return r;		}		if(!noCorrect) {			// 誤り訂正			doForney(data, length, jisu, pos, sigma, omega);		}		return jisu;	}	public int decode(int[] data, int length) {		return decode(data, length, false);	}	public int decode(int[] data) {		return decode(data, data.length, false);	}/*	public static void main(String[] args) {		int[] data = new int[] {			32, 65, 205, 69, 41, 220, 46, 128, 236,			42, 159, 74, 221, 244, 169, 239, 150, 138, 70, 237, 85, 224, 96, 74, 219, 61		};		RsDecode dec = new RsDecode(17);		int r = dec.decode(data);		System.out.println("r=" + r);		for(int i = 0; i < 8; i++) {			data[i] ^= (int) (Math.random() * 256);		}		System.out.println(java.util.Arrays.toString(data));		r = dec.decode(data);		System.out.println("r=" + r);		System.out.println(java.util.Arrays.toString(data));	}*/}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区高清播放| 欧美一区三区二区| 不卡在线视频中文字幕| 国产伦精品一区二区三区免费迷| 老司机午夜精品99久久| 蜜臀久久99精品久久久久久9 | 成人午夜av影视| 东方aⅴ免费观看久久av| 国产精品自拍在线| 高清shemale亚洲人妖| 成人看片黄a免费看在线| 91一区一区三区| 欧美三级中文字幕在线观看| 欧美日韩午夜影院| 日韩一区二区在线观看视频| 日韩免费看的电影| 欧美哺乳videos| 国产欧美日本一区视频| 国产精品网站在线观看| 欧美国产精品v| 亚洲色图在线视频| 婷婷综合久久一区二区三区| 日本成人在线电影网| 国产一区在线观看麻豆| 成人激情动漫在线观看| 色妹子一区二区| 欧美日韩一区二区三区视频| 日韩精品一区二区三区三区免费 | 国产精品天天看| 一区二区三区在线免费播放 | 99re热视频精品| 在线区一区二视频| 日韩欧美国产一区在线观看| 久久亚洲欧美国产精品乐播| 国产精品久久久一本精品 | 免费观看30秒视频久久| 久久99国产精品久久| 风流少妇一区二区| 欧美视频一区在线| 日韩精品在线一区二区| 中文字幕不卡在线观看| 午夜精品福利一区二区三区蜜桃| 精品无人码麻豆乱码1区2区 | 一本久久a久久免费精品不卡| 色94色欧美sute亚洲线路二| 日韩欧美国产综合| 日韩毛片高清在线播放| 日本特黄久久久高潮| 成人黄色免费短视频| 欧美日韩二区三区| 久久久久久久综合日本| 亚洲一区二区三区自拍| 国产一区二区三区电影在线观看 | 国产欧美一区二区精品婷婷| 亚洲一区二区中文在线| 高清国产一区二区三区| 91精品久久久久久久99蜜桃| 国产精品久久久久影院亚瑟| 视频一区国产视频| av电影在线观看完整版一区二区| 欧美三日本三级三级在线播放| 久久久一区二区| 天天色 色综合| 99综合影院在线| 精品对白一区国产伦| 亚洲国产你懂的| 成人激情免费视频| 久久综合狠狠综合久久激情 | 色偷偷成人一区二区三区91| 欧美精品一区二区三区蜜臀| 亚洲大片免费看| 成人黄色综合网站| 久久久精品日韩欧美| 人人狠狠综合久久亚洲| 欧美性色综合网| 亚洲欧美在线视频观看| 国产毛片精品一区| 日韩三级中文字幕| 午夜精品免费在线| 欧洲一区在线电影| 亚洲女人****多毛耸耸8| 丁香网亚洲国际| 久久久久久久久久久99999| 丝袜亚洲另类丝袜在线| 日本韩国欧美一区二区三区| 国产精品视频一二| 国产在线视频一区二区| 日韩丝袜情趣美女图片| 亚洲aⅴ怡春院| 欧美视频在线观看一区二区| 一区二区欧美精品| k8久久久一区二区三区| 国产丝袜美腿一区二区三区| 久久精品久久久精品美女| 在线播放中文字幕一区| 亚洲午夜久久久久久久久久久| 色综合一区二区三区| 椎名由奈av一区二区三区| 国产91丝袜在线18| 国产欧美一区二区精品秋霞影院| 国产一本一道久久香蕉| 精品国产乱码久久久久久闺蜜| 蜜臀av在线播放一区二区三区| 欧美卡1卡2卡| 免费成人你懂的| 日韩欧美色综合网站| 蜜桃av一区二区| 日韩精品一区二区三区老鸭窝| 青娱乐精品在线视频| 日韩欧美一区二区久久婷婷| 九色|91porny| 国产视频在线观看一区二区三区 | 3d动漫精品啪啪| 日本大胆欧美人术艺术动态| 欧美一区二区三区四区在线观看| 日韩电影在线观看电影| 日韩欧美精品在线| 国产成人午夜99999| 国产精品视频一二三| 91免费小视频| 亚洲成a人v欧美综合天堂下载| 欧美日韩免费一区二区三区 | 91色视频在线| 午夜精品福利视频网站| 精品日韩在线观看| 国产成人在线免费观看| 一区免费观看视频| 欧美日韩一级视频| 精一区二区三区| 亚洲国产精品精华液2区45| 91丝袜呻吟高潮美腿白嫩在线观看| 亚洲一区二区欧美日韩| 欧美一区二区啪啪| 丰满少妇久久久久久久| 一区二区三区自拍| 日韩欧美视频一区| 99久久精品免费观看| 亚洲一二三区在线观看| 欧美xxxxxxxxx| 不卡的电影网站| 亚洲电影中文字幕在线观看| 欧美岛国在线观看| www.激情成人| 午夜精品久久久久影视| 久久精品视频网| 欧美视频在线不卡| 国产乱对白刺激视频不卡| 亚洲欧美日韩国产成人精品影院| 91麻豆精品国产91久久久久久久久 | 91啦中文在线观看| 日本三级亚洲精品| 国产精品第一页第二页第三页| 欧美日韩国产天堂| 国产成人综合网| 午夜私人影院久久久久| 国产日韩欧美亚洲| 欧美蜜桃一区二区三区| 国产福利精品一区二区| 亚洲一区二区在线观看视频| 久久精品夜夜夜夜久久| 777午夜精品视频在线播放| 成人性生交大合| 日本成人中文字幕| 亚洲人精品午夜| 久久综合久久久久88| 欧美女孩性生活视频| 不卡的av网站| 狠狠色丁香久久婷婷综合丁香| 一区二区三区丝袜| 日本一区二区免费在线观看视频| 宅男在线国产精品| 色就色 综合激情| 成人免费高清视频| 裸体一区二区三区| 亚洲成人激情自拍| 亚洲欧美在线视频| 欧美激情综合五月色丁香| 欧美一级午夜免费电影| 色婷婷国产精品久久包臀| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 欧美一区二区网站| 欧美日精品一区视频| 99热99精品| 成人亚洲一区二区一| 久久91精品国产91久久小草| 午夜国产精品影院在线观看| 亚洲色图视频免费播放| 中文字幕国产一区| 国产欧美日韩一区二区三区在线观看| 欧美一区二区观看视频| 欧美日韩在线一区二区| 97久久超碰国产精品| 成人性生交大片免费看视频在线| 国精产品一区一区三区mba视频 | 99国产精品一区| 国产高清不卡一区二区| 国产成人午夜高潮毛片| 国产九色sp调教91| 国产在线视视频有精品| 卡一卡二国产精品|