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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? qrcodedatablockreader.java

?? QR code是日本人開發(fā)的現(xiàn)在很流行的國際通用的二維條形碼
?? JAVA
字號:
/* * created: 2004/10/04 */package jp.sourceforge.qrcode.reader;import jp.sourceforge.qrcode.QRCodeDecoder;import jp.sourceforge.qrcode.exception.InvalidDataBlockException;import jp.sourceforge.qrcode.util.DebugCanvas;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.UnsupportedEncodingException;public class QRCodeDataBlockReader {	int[] blocks;	int dataLengthMode;	int blockPointer;	int bitPointer;	int dataLength;	int numErrorCorrectionCode;	DebugCanvas canvas;	static final int MODE_NUMBER = 1;	static final int MODE_ROMAN_AND_NUMBER = 2;	static final int MODE_8BIT_BYTE = 4;	static final int MODE_KANJI = 8;	// this constant come from p16, JIS-X-0510(2004) 	final int[][] sizeOfDataLengthInfo = {		{10, 9, 8, 8}, {12, 11, 16, 10}, {14, 13, 16, 12}	};	public QRCodeDataBlockReader(int[] blocks, int version, int numErrorCorrectionCode) {		blockPointer = 0;		bitPointer = 7;		dataLength = 0;		this.blocks = blocks;		this.numErrorCorrectionCode = numErrorCorrectionCode;		if (version <= 9) dataLengthMode = 0;		else if (version >= 10 && version <= 26) dataLengthMode = 1;		else if (version >= 27 && version <= 40) dataLengthMode = 2;		canvas = QRCodeDecoder.getCanvas();	}		int getNextBits(int numBits) throws ArrayIndexOutOfBoundsException {//		System.out.println("numBits:" + String.valueOf(numBits));//		System.out.println("blockPointer:" + String.valueOf(blockPointer));//		System.out.println("bitPointer:" + String.valueOf(bitPointer));		int bits = 0;		if (numBits < bitPointer + 1) { // next word fits into current data block			int mask = 0;			for (int i = 0; i < numBits; i++) {				mask += 1 << i;			}			mask <<= (bitPointer - numBits + 1);						bits = (blocks[blockPointer] & mask) >> (bitPointer - numBits + 1);			bitPointer -= numBits;			return bits;		}		else if (numBits < bitPointer + 1 + 8) { // next word crosses 2 data blocks			int mask1 = 0;			for (int i = 0; i < bitPointer + 1; i++) {				mask1 += 1 << i;			}			bits = (blocks[blockPointer] & mask1) << (numBits - (bitPointer + 1));			blockPointer++;			bits += (blocks[blockPointer]) >> (8 - (numBits - (bitPointer + 1)));			bitPointer = bitPointer - numBits % 8;			if (bitPointer < 0) {				bitPointer = 8 + bitPointer;			}			return bits;			}		else if (numBits < bitPointer + 1 + 16) { // next word crosses 3 data blocks			int mask1 = 0; // mask of first block			int mask3 = 0; // mask of 3rd block			//bitPointer + 1 : number of bits of the 1st block			//8 : number of the 2nd block (note that use already 8bits because next word uses 3 data blocks)			//numBits - (bitPointer + 1 + 8) : number of bits of the 3rd block 			for (int i = 0; i < bitPointer + 1; i++) {				mask1 += 1 << i;			}			int bitsFirstBlock = (blocks[blockPointer] & mask1) << (numBits - (bitPointer + 1));			blockPointer++;			int bitsSecondBlock = blocks[blockPointer] << (numBits - (bitPointer + 1 + 8));			blockPointer++;						for (int i = 0; i < numBits - (bitPointer + 1 + 8); i++) {				mask3 += 1 << i;			}			mask3 <<= 8 - (numBits - (bitPointer + 1 + 8));			int bitsThirdBlock = (blocks[blockPointer] & mask3) >> (8 - (numBits - (bitPointer + 1 + 8)));						bits = bitsFirstBlock + bitsSecondBlock + bitsThirdBlock;			bitPointer = bitPointer - (numBits - 8) % 8;			if (bitPointer < 0) {				bitPointer = 8 + bitPointer;			}			return bits;		}		else {			System.out.println("ERROR!");			return 0;		}	}			int getNextMode() throws ArrayIndexOutOfBoundsException {		//canvas.println("data blocks:"+ (blocks.length - numErrorCorrectionCode));		if ((blockPointer > blocks.length - numErrorCorrectionCode -2))			return 0;		else			return getNextBits(4);	}		int guessMode(int mode) {		//correct modes: 0001 0010 0100 1000		//possible data: 0000 0011 0101 1001 0110 1010 1100		//               0111 1101 1011 1110 1111//		MODE_NUMBER = 1;//		MODE_ROMAN_AND_NUMBER = 2;//		MODE_8BIT_BYTE = 4;//		MODE_KANJI = 8;		switch (mode) {		case 3:			return MODE_NUMBER;		case 5:			return MODE_8BIT_BYTE;		case 6:			return MODE_8BIT_BYTE;		case 7:			return MODE_8BIT_BYTE;		case 9:			return MODE_KANJI;		case 10:			return MODE_KANJI;		case 11:			return MODE_KANJI;		case 12:			return MODE_8BIT_BYTE;		case 13:			return MODE_8BIT_BYTE;		case 14:			return MODE_8BIT_BYTE;		case 15:			return MODE_8BIT_BYTE;		default:			return MODE_KANJI;		}	}	int getDataLength(int modeIndicator) throws ArrayIndexOutOfBoundsException {		int index = 0;		while(true) {			if ((modeIndicator >> index) == 1)				break;			index++;		}				return getNextBits(sizeOfDataLengthInfo[dataLengthMode][index]);	}	public byte[] getDataByte() throws InvalidDataBlockException {		canvas.println("Reading data blocks.");		ByteArrayOutputStream output = new ByteArrayOutputStream();				try {			do {				int mode = getNextMode();				//canvas.println("mode: " + mode);				if (mode == 0) {					if (output.size() > 0)						break;					else						throw new InvalidDataBlockException("Empty data block");				}				//if (mode != 1 && mode != 2 && mode != 4 && mode != 8)				//	break;				//}				if (mode != MODE_NUMBER && mode != MODE_ROMAN_AND_NUMBER &&						mode != MODE_8BIT_BYTE && mode != MODE_KANJI) {/*					canvas.println("Invalid mode: " + mode);					mode = guessMode(mode);					canvas.println("Guessed mode: " + mode); */					throw new InvalidDataBlockException("Invalid mode: " + mode + " in (block:"+blockPointer+" bit:"+bitPointer+")");				}				dataLength = getDataLength(mode);				if (dataLength < 1)					throw new InvalidDataBlockException("Invalid data length: " + dataLength);				//canvas.println("length: " + dataLength);				switch (mode) {				case MODE_NUMBER:					//canvas.println("Mode: Figure");					output.write(getFigureString(dataLength).getBytes());					break;				case MODE_ROMAN_AND_NUMBER:					//canvas.println("Mode: Roman&Figure");					output.write(getRomanAndFigureString(dataLength).getBytes());					break;				case MODE_8BIT_BYTE:					//canvas.println("Mode: 8bit Byte");					output.write(get8bitByteArray(dataLength));					break;				case MODE_KANJI:					//canvas.println("Mode: Kanji");					output.write(getKanjiString(dataLength).getBytes());					break;				}	//							//canvas.println("DataLength: " + dataLength);				//System.out.println(dataString);			} while (true);		} catch (ArrayIndexOutOfBoundsException e) {			//e.printStackTrace();			throw new InvalidDataBlockException("Data Block Error in (block:"+blockPointer+" bit:"+bitPointer+")");		} catch (IOException e) {			throw new InvalidDataBlockException(e.getMessage());		}		return output.toByteArray();	}		public String getDataString() throws ArrayIndexOutOfBoundsException {		canvas.println("Reading data blocks...");		String dataString = "";		do {			int mode = getNextMode();			canvas.println("mode: " + mode);			if (mode == 0)				break;			//if (mode != 1 && mode != 2 && mode != 4 && mode != 8)			//	break;			//}			if (mode != MODE_NUMBER && mode != MODE_ROMAN_AND_NUMBER &&					mode != MODE_8BIT_BYTE && mode != MODE_KANJI) {				// mode = guessMode(mode);				//System.out.println("guessed mode: " + mode);			}							dataLength = getDataLength(mode);			canvas.println(Integer.toString(blocks[blockPointer]));			System.out.println("length: " + dataLength);			switch (mode) {			case MODE_NUMBER: 				//canvas.println("Mode: Figure");				dataString += getFigureString(dataLength);				break;			case MODE_ROMAN_AND_NUMBER:				//canvas.println("Mode: Roman&Figure");				dataString += getRomanAndFigureString(dataLength);				break;			case MODE_8BIT_BYTE:				//canvas.println("Mode: 8bit Byte");				dataString += get8bitByteString(dataLength);				break;			case MODE_KANJI:				//canvas.println("Mode: Kanji");				dataString += getKanjiString(dataLength);				break;			}			//canvas.println("DataLength: " + dataLength);			//System.out.println(dataString);		} while (true);		System.out.println("");		return dataString;	}			String getFigureString(int dataLength) throws ArrayIndexOutOfBoundsException {		int length = dataLength;		int intData = 0;		String strData = "";		do {			if (length >= 3) {				intData = getNextBits(10);				if (intData < 100) strData += "0";				if (intData < 10) strData += "0";				length -= 3;			}			else if (length == 2) {				intData = getNextBits(7);				if (intData < 10) strData += "0";				length -= 2;			}			else if (length == 1) {				intData = getNextBits(4);				length -= 1;			}							strData += Integer.toString(intData);		} while (length > 0);				return strData;	}		String getRomanAndFigureString(int dataLength) throws ArrayIndexOutOfBoundsException  {		int length = dataLength;		int intData = 0;		String strData = "";		final char[] tableRomanAndFigure = {			 '0', '1', '2', '3', '4', '5',	 		 '6', '7', '8', '9', 'A', 'B',			 'C', 'D', 'E', 'F', 'G', 'H',			 'I', 'J', 'K', 'L', 'M', 'N',			 'O', 'P', 'Q', 'R', 'S', 'T',			 'U', 'V', 'W', 'X', 'Y', 'Z',			 ' ', '$', '%', '*', '+', '-',			 '.', '/', ':'			 };		do {			if (length > 1) {				intData = getNextBits(11);				int firstLetter = intData / 45;				int secondLetter = intData % 45;				strData += String.valueOf(tableRomanAndFigure[firstLetter]);				strData += String.valueOf(tableRomanAndFigure[secondLetter]);				length -= 2;			}			else if (length == 1) {				intData = getNextBits(6);				strData += String.valueOf(tableRomanAndFigure[intData]);				length -= 1;			}		} while (length > 0);				return strData;	}		public byte[] get8bitByteArray(int dataLength) throws ArrayIndexOutOfBoundsException  {		int length = dataLength;		int intData = 0;		ByteArrayOutputStream output=new ByteArrayOutputStream();		do {			intData = getNextBits(8);			output.write((byte)intData);			length--;		} while (length > 0);		return output.toByteArray();	}	String get8bitByteString(int dataLength) throws ArrayIndexOutOfBoundsException  {		int length = dataLength;		int intData = 0;		String strData = "";		do {			intData = getNextBits(8);			strData+=(char)intData;			length--;		} while (length > 0);		return strData;	}	String getKanjiString(int dataLength) throws ArrayIndexOutOfBoundsException {		int length = dataLength;		int intData = 0;		String unicodeString = "";		do {			intData = getNextBits(13);			int lowerByte = intData % 0xC0;			int higherByte = intData / 0xC0;			int tempWord = (higherByte << 8) + lowerByte;			int shiftjisWord = 0;			if (tempWord + 0x8140 <= 0x9FFC) { // between 8140 - 9FFC on Shift_JIS character set				shiftjisWord = tempWord + 0x8140;			}			else { // between E040 - EBBF on Shift_JIS character set				shiftjisWord = tempWord + 0xC140;			}			byte[] tempByte = new byte[2];			tempByte[0] = (byte)(shiftjisWord >> 8);			tempByte[1] = (byte)(shiftjisWord & 0xFF);      try{ 			  unicodeString += new String(tempByte, "Shift_JIS");      } catch (UnsupportedEncodingException e) {        e.printStackTrace();      }			length--;		} while (length > 0);					return unicodeString;	}	}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美白人最猛性xxxxx69交| 亚洲桃色在线一区| 欧美日韩国产电影| www.欧美日韩国产在线| 国产一区二区三区精品视频 | 蜜臀av性久久久久av蜜臀妖精| 久久精品国产77777蜜臀| 国产欧美日韩另类视频免费观看| 日韩亚洲欧美成人一区| 欧美视频自拍偷拍| 91精品福利视频| 99免费精品在线| 成人免费视频一区| 国产一区二区免费视频| 美女免费视频一区| 奇米一区二区三区| 日本一区中文字幕| 日韩精品乱码免费| 在线播放/欧美激情| 欧美日韩成人综合天天影院| 在线中文字幕一区| 欧美日韩大陆在线| 3atv在线一区二区三区| 欧美一区二区视频在线观看2020 | 欧美大白屁股肥臀xxxxxx| 欧美电影在哪看比较好| 欧美主播一区二区三区美女| 色94色欧美sute亚洲线路二| 国产不卡视频在线播放| 国产98色在线|日韩| 成人国产在线观看| 99久久综合99久久综合网站| 99久久久久久99| 欧洲精品视频在线观看| 欧亚洲嫩模精品一区三区| 99视频精品全部免费在线| 日本二三区不卡| 欧美日韩视频在线一区二区| 宅男噜噜噜66一区二区66| 日韩亚洲欧美在线| 国产午夜精品一区二区三区嫩草| 亚洲国产成人私人影院tom| 99久久久无码国产精品| 国产成人综合视频| 99国产精品国产精品毛片| 91猫先生在线| 国产在线精品免费| 不卡一区在线观看| 91麻豆123| 欧美老年两性高潮| 久久久久国产精品麻豆| 亚洲免费三区一区二区| 午夜精品久久久久久久久久久| 麻豆免费精品视频| 成人综合在线观看| 欧美日韩国产中文| 久久九九久久九九| 中文字幕乱码一区二区免费| 亚洲老妇xxxxxx| 久久国产乱子精品免费女| 丁香亚洲综合激情啪啪综合| 在线观看欧美黄色| 337p日本欧洲亚洲大胆色噜噜| 亚洲欧洲一区二区三区| 一区二区三区欧美亚洲| 精品中文字幕一区二区| 91色.com| 精品久久一区二区三区| 亚洲伦理在线精品| 伦理电影国产精品| 色婷婷综合五月| 久久尤物电影视频在线观看| 亚洲图片一区二区| 一区二区三区欧美激情| 韩国av一区二区| 91福利精品第一导航| 久久久精品日韩欧美| 亚洲va欧美va天堂v国产综合| 国产精品91一区二区| 欧美视频一区二区三区在线观看| 久久精品欧美日韩精品| 日韩精品高清不卡| 91在线播放网址| 精品成人a区在线观看| 午夜精品爽啪视频| 91亚洲大成网污www| 日韩精品一区二区三区老鸭窝| 亚洲精品国产无天堂网2021 | 国产福利一区二区三区视频| 欧美日韩一级二级三级| 国产精品国产三级国产普通话蜜臀 | 亚洲欧美偷拍另类a∨色屁股| 人禽交欧美网站| 色婷婷综合久久久久中文一区二区| 欧美日本免费一区二区三区| 国产精品每日更新| 麻豆精品国产传媒mv男同| 色偷偷久久人人79超碰人人澡 | 久久久国产综合精品女国产盗摄| 午夜久久久影院| 99久久精品免费看| 久久精品视频免费观看| 蜜臀av在线播放一区二区三区| 日本高清不卡在线观看| 国产精品久久久久久久久图文区 | 成人午夜短视频| 在线播放中文字幕一区| 亚洲国产中文字幕| 91丝袜美女网| 国产精品美女一区二区在线观看| 国内精品写真在线观看| 国产日韩欧美制服另类| 久久99国产精品久久| 日韩欧美激情四射| 韩国三级电影一区二区| 国产午夜久久久久| a亚洲天堂av| 亚洲小说欧美激情另类| 欧美日韩一区二区三区在线| 日韩和欧美的一区| 久久亚洲一区二区三区四区| 国产成人av一区| 亚洲免费在线观看视频| 欧美在线影院一区二区| 天涯成人国产亚洲精品一区av| 欧美精品日韩一区| 久久不见久久见免费视频1| 精品国产凹凸成av人网站| 国产一区二区三区国产| 国产精品久久久99| 精品视频一区 二区 三区| 日韩av一级片| 欧美精彩视频一区二区三区| 91视频一区二区三区| 日韩电影一二三区| 久久精品亚洲乱码伦伦中文| 99久久er热在这里只有精品66| 亚洲成人av免费| 欧美精品一区二区三区久久久| 成人av电影在线观看| 亚洲成人动漫在线免费观看| 久久婷婷国产综合精品青草| 色婷婷综合久久| 麻豆国产欧美日韩综合精品二区| 中文字幕乱码久久午夜不卡| 欧美日韩高清影院| 国产精品影视天天线| 亚洲一区二区三区美女| 精品少妇一区二区三区日产乱码| 成人h精品动漫一区二区三区| 爽爽淫人综合网网站| 欧美激情在线一区二区三区| 欧美日韩亚洲丝袜制服| 国产精品亚洲视频| 亚洲国产美女搞黄色| 久久久久久久网| 在线观看网站黄不卡| 国产黄色91视频| 日韩一区欧美二区| 国产精品美女久久久久久2018| 欧美日韩一区二区电影| 国产不卡在线一区| 蜜臀av性久久久久蜜臀av麻豆| 一区在线中文字幕| 精品国产sm最大网站| 色国产综合视频| 高清beeg欧美| 另类小说色综合网站| 一区二区三区 在线观看视频 | 免费观看久久久4p| **欧美大码日韩| 26uuu国产日韩综合| 欧美亚洲国产一卡| 国产成人亚洲综合a∨婷婷 | 国产乱码一区二区三区| 亚洲大片在线观看| 亚洲美腿欧美偷拍| 欧美高清在线一区二区| 日韩限制级电影在线观看| 色94色欧美sute亚洲线路一ni| 国产精品一区二区男女羞羞无遮挡| 天天色天天爱天天射综合| 亚洲视频网在线直播| 国产欧美日韩卡一| 久久久精品免费网站| 日韩免费观看高清完整版在线观看| 在线观看国产日韩| 91一区二区三区在线播放| 国产精品18久久久久久久久| 麻豆一区二区三区| 亚洲成av人片在线观看无码| 一区二区三区中文在线观看| 中文在线免费一区三区高中清不卡| 欧美成人video| 3d成人动漫网站| 8x8x8国产精品| 欧美男女性生活在线直播观看| 91传媒视频在线播放| 色综合色狠狠综合色| av在线播放不卡|