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

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

?? mmdecoder.java

?? 用于開發mms應用的Java庫
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
				value = decodeDateStr(in);
				break;	
			case 6:		// TYPE_MSGCLASS
				value = decodeMessageClass(in);
				break;	
			case 7:		// TYPE_MSGTYPE
				value = decodeMessageType(in);
				break;
			case 8:		// TYPE_PRIORITY
				value = decodePriority(in);
				break;
			case 9:		// TYPE_RESPONSESTATUS
				value = decodeResponseStatus(in);
				break;				
			case 10:		// TYPE_STATUS
				value = decodeStatus(in);
				break;			
			case 11:		// TYPE_CONTENTTYPE
				value = decodeContentType(in);
				break;	
			case 12:		// TYPE_VERSION
				value = decodeVersion(in);
				break;	
			case 13:		// TYPE_FROM
				value = decodeFrom(in);
				break;			
			case 14:		// TYPE_NOVALUE:
				value = "";
				break;
			case 15: 		// TYPE_CHARSET
				value = decodeCharset(in);
				break;
			case 16:		// TYPE_Q
				value = "";
				break;		// TYPE_INTEGER		
			case 17:
				value = String.valueOf(decodeInteger(in));
				break;
			default: value = decodeString(in); // store string representation
		}
		
		return value;
	}


	
	
	
	/*****************************************************************************************
	 * Functions for decoding values according to [MMSEncapsulation] and [WAPWSP]
	 */
	
	/**
	 * decode a long value
	 */
	protected static long decodeLong(ByteArrayInputStream res) throws Exception {
		int len = 0;
		byte[] buf = new byte[1];
		
		// first byte specifies length		
		res.read(buf);
		len = buf[0];
		
		int r = 0;
		// most significant bit first
		for (int i = 0; i < len; i++) {
			res.read(buf);
			
			r = r << 8;
			r |= (buf[0] & 0xFF);
		}
		return r;
	}
	
	/**
	 * encode a short int
	 */
	protected static int decodeInt(ByteArrayInputStream res) throws Exception {
		byte[] b = new byte[1];
		res.read(b);
		
		if ((b[0] & 0xFF) >= 128) b[0] &= 127;	
		
		return (int) (b[0] & 0xFF);
	}

	/**
	 * decode a integer (short or long)
	 */
	protected static int decodeInteger(ByteArrayInputStream res) throws Exception {
		byte[] b = new byte[1];
		res.read(b);
		if ((b[0] & 0xFF) >= 128) { // short form
			b[0] &= 127;	
			return (int) (b[0] & 0xFF);
		}
		int len = b[0];
		
		int r = 0;
		// most significant bit first
		for (int i = 0; i < len; i++) {
			res.read(b);
			
			r = r << 8;
			r |= (b[0] & 0xFF);
		}
		return r;
	}	

	/**
	 * decode a Uintvar (variable length int). Max 32bits
	 */
	protected static int decodeUintvar(ByteArrayInputStream res) throws Exception {
		byte[] buf = new byte[1];
		int r = 0;
		
		do {
			res.read(buf);
						
			r = (r << 7) | (buf[0] & 0x7F);
		} while ((buf[0] & 0x80) != 0);

		return r;
	}
	
	/**
	 * encode a Date class into a long (4 octets)
	 */
	protected static Date decodeDate(ByteArrayInputStream res) throws Exception {
		long l = decodeLong(res) * 1000;
		return new Date(l);
	}
	
	/**
	 * encode a Date class into a String
	 */
	protected static String decodeDateStr(ByteArrayInputStream res) throws Exception {
		Date d = decodeDate(res);
			
		return formatDate(d); 
	}

	/**
	 * encode a Date class into a long (4 octets)
	 */
	protected static Object[] decodeDateVariable(ByteArrayInputStream res) throws Exception {
		Object[] result = new Object[2];
		
		int len = decodeInt(res);
		
		byte[] tmp = new byte[len]; 
		res.read(tmp);
		
		ByteArrayInputStream bais = new ByteArrayInputStream(tmp);
		
		if (len > 4) {
			int abs = decodeInt(bais);
			long l = decodeLong(bais) * 1000;
			result[0] = new Date(l);
			result[1] = new Boolean(abs == 0);
		} else {
			long l = decodeLong(bais) * 1000;
			result[0] = new Date(l);
			result[1] = new Boolean(false);
		}
		return result;
	}
	
	/**
	 * encode a Date class into a String
	 */
	protected static String decodeDateStrVariable(ByteArrayInputStream res) throws Exception {
		Object[] tmp = decodeDateVariable(res);
			
		return formatDate((Date) tmp[0]); 
	}
	
			
	/**
	 * decode a string
	 */
	protected static String decodeString(ByteArrayInputStream res) throws Exception {
		StringBuffer r = new StringBuffer();
		
		byte[] b = new byte[1];
		if (res.read(b) == -1) return null; // eos
		
		if (((b[0] & 0xFF) != 127) && (b[0] != 0)) r.append((char) b[0]);	// quote

		while ((b[0] & 0xFF) != 0) {
			if (res.read(b) == -1) break; // eos			
			if (b[0] != 0) r.append((char) b[0]);
		}
		
		if (r.length() == 0) return null;
		
		return new String(r);
	}
	
	
	/**
	 * decode a boolean (with Boolean as input)
	 */
	protected static Boolean decodeBoolean(ByteArrayInputStream res) throws Exception {
		byte[] b = new byte[1];
		res.read(b);
		
		if ((b[0] & 0xFF) == 128) return new Boolean(true); else
		  return new Boolean(false);	
	}
	
	/**
	 * Decode content type
	 * 
	 * format for content types is defined in [WAPWSP], 8.4.2.24:
	 * 
	 * Content-type-value = Constrained-media | Content-general-form
	 * Content-general-form = Value-length Media-type
	 * Media-type = (Well-known-media | Extension-Media) *(Parameter)
	 */
	protected static String decodeContentType(ByteArrayInputStream res) throws Exception {		
		byte[] buf = new byte[1];
	  	
		if (res.read(buf) == -1) return null; // eos
	  	
		int i = (int) (buf[0] & 0xFF);
	  	
		String ct = "";
		if (i == 0) return null; // none
	  	
		if (i < 128) { // Content-general-form
			int len = i;
	  		
			if (i > 31) { // string
				ct = (char) i + decodeString(res);
			} else {
				if (i == 31) // length quote, when length > 30
					len = decodeUintvar(res); 
	  	  			
				byte[] dta = new byte[len];
				res.read(dta);
			
				ByteArrayInputStream in = new ByteArrayInputStream(dta);
				in.read(buf);
			
				int c = (int) (buf[0] & 0xFF);
				if (c < 128) {
					String tmp = decodeString(in);
					if (tmp != null) ct = (char) c + tmp; else return null;
				} else ct = MMConstants.CONTENT_TYPES[(c & 0x7F)]; 			
  	
				// the inputstream might contain some parameter, parse them
				ct += decodeParameters(in);					
			}
	  					
	  		
			return ct;

		} else i &= 127; // short form
		
		if (i < MMConstants.CONTENT_TYPES.length)
			ct = MMConstants.CONTENT_TYPES[i];
		else {		
			ct = (char) i + decodeString(res);	// encoded version not found
		}		
		
		return ct;
	}

	/**
	 * get message class from string, it's a byte if pre-defined
	 */
	protected static String decodeMessageClass(ByteArrayInputStream res) throws Exception {
		int i = (decodeInt(res) & 0xFF);
	
		if (i < MMConstants.MESSAGE_CLASSES.length) return MMConstants.MESSAGE_CLASSES[i];
			
		return (char) i + decodeString(res);	// encoded version not found						
	}
	
	/**
	 * get message class (int) given a string 
	 */
	protected static int getMessageClass(String s) {
		for (int i = 0; i < MMConstants.MESSAGE_CLASSES.length; i++)
			if (MMConstants.MESSAGE_CLASSES[i].equalsIgnoreCase(s)) return i;
		return -1;
	}
	

	/**
	 * get message type from string, it's a byte if predefined
	 */
	protected static String decodeMessageType(ByteArrayInputStream res) throws Exception {
		int i = (decodeInt(res) & 0xFF);
			
		if (i < MMConstants.MESSAGE_TYPES.length) return MMConstants.MESSAGE_TYPES[i];
		
		return (char) i + decodeString(res);	// encoded version not found		
	}
	
	/**
	 * get message type (int) given a string 
	 */
	protected static int getMessageType(String s) {
		for (int i = 0; i < MMConstants.MESSAGE_TYPES.length; i++)
			if (MMConstants.MESSAGE_TYPES[i].equalsIgnoreCase(s)) return i;
		return -1;
	}

	/**
	 * get message class from string, it's a byte if pre-defined
	 */
	protected static String decodePriority(ByteArrayInputStream res) throws Exception {
		int i = (decodeInt(res) & 0xFF);
	
		if (i < MMConstants.PRIORITIES.length) return MMConstants.PRIORITIES[i];
			
		return (char) i + decodeString(res);	// encoded version not found		
	}
	
	/**
	 * get message type (int) given a string 
	 */
	protected static int getPriority(String s) {
		for (int i = 0; i < MMConstants.PRIORITIES.length; i++)
			if (MMConstants.PRIORITIES[i].equalsIgnoreCase(s)) return i;
		return -1;
	}
	
	/**
	 * get response status, it's a byte if predefined
	 */
	protected static String decodeResponseStatus(ByteArrayInputStream res) throws Exception {
		int i = (decodeInt(res) & 0xFF);

		if (i < MMConstants.RESPONSE_STATUSES.length) return MMConstants.RESPONSE_STATUSES[i];
	
		return (char) i + decodeString(res);	// encoded version not found		
	}	
	
	/**
	 * get message type (int) given a string 
	 */
	protected static int getResponseStatus(String s) {
		for (int i = 0; i < MMConstants.RESPONSE_STATUSES.length; i++)
			if (MMConstants.RESPONSE_STATUSES[i].equalsIgnoreCase(s)) return i;
		return -1;
	}	
	
	/**
	 * get response status, it's a byte if predefined
	 */
	protected static String decodeStatus(ByteArrayInputStream res) throws Exception {
		int i = decodeInt(res);

		if (i < MMConstants.STATUSES.length) return MMConstants.STATUSES[i];

		return (char) i + decodeString(res);	// encoded version not found				
	}	
	
	/**
	 * get message status (int) given a string 
	 */
	protected static int getMessageStatus(String s) {
		for (int i = 0; i < MMConstants.STATUSES.length; i++)
			if (MMConstants.STATUSES[i].equalsIgnoreCase(s)) return i;
		return -1;
	}
	
	
	/**
	 * get mms version
	 */
	protected static String decodeVersion(ByteArrayInputStream in) throws Exception {
		int i = decodeInt(in);
		
		String major = String.valueOf((i >> 4));
		String minor = "0";
		
		return major + "." + minor;
	}
	
	/**
	 * get from
	 */
	protected static String decodeFrom(ByteArrayInputStream res) throws Exception {
		int i = decodeUintvar(res); // length
		int token = decodeInt(res);
		
		if ((token & 0xFF) == 0) // address-present-token
			return decodeString(res);
			
		return null;		
	}	
		
	/**
	 * get charset
	 */
	protected static String decodeCharset(ByteArrayInputStream res) throws Exception {
		int i = decodeInteger(res);
		
		for (int c = 0; c < MMConstants.WELLKNOWN_CHARSETS.length; c++) {
			if (((Integer) MMConstants.WELLKNOWN_CHARSETS[c][1]).intValue() == i)
				return (String) MMConstants.WELLKNOWN_CHARSETS[c][0];
		}
		
		// something we don't understand
			
		return decodeString(res);		
	}
	
	/**
	 * Misc helper functions
	 */
	
	protected static void setAttribute(String name, String value, ArrayList names, ArrayList values) {
			int idx = names.indexOf(name);
			if (idx != -1) {
				names.set(idx, name);
				values.set(idx, value);
			} else {
				names.add(name);
				values.add(value);
			}
		}

	protected static String versionToString(int version) {
			if (version == 0) version = MMConstants.MMS_VERSION_1_0;
		
			String major = String.valueOf((version >> 4));
			String minor = "0";
		
			return major + "." + minor;	
		}
	
	protected static String formatDate(Date d) {
			// transform to UTC (GMT)
			SimpleTimeZone stz = new SimpleTimeZone(0, "GMT");
			Calendar cal = Calendar.getInstance(stz);
		
			SimpleDateFormat formatter = new SimpleDateFormat ("yyyy-MM-dd'T'HH:mm:ss'Z'");
			formatter.setCalendar(cal);
		
			return formatter.format(d); 
		}	
		
	protected static Date dateFromString(String s) {
		Date date = null;
		
		SimpleDateFormat[] dateFormats = {
				new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"), // as specified in the specs
				new SimpleDateFormat("EEE, dd MMM yyyy hh:mm:ss z", Locale.US),
				new SimpleDateFormat()}; // default locale

		int i = 0;
		boolean success = false;

		while (!success) {
			if (i > dateFormats.length - 1) 				
				break;
			
			try {
				SimpleDateFormat formatter = dateFormats[i++];
				date = formatter.parse(s);
			} catch (Exception e) {				
				continue;
			}
			success = true;
		}
		
		return date;
	}
		
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久精品国产99久久精品芒果| 九九久久精品视频| 懂色av一区二区夜夜嗨| 欧美大黄免费观看| 日韩电影在线一区| 日韩视频一区二区| 青青草精品视频| 欧美一级高清片在线观看| 亚洲午夜视频在线| 欧美视频三区在线播放| 亚洲一级二级在线| 欧美一区二区视频在线观看2022 | 久久久亚洲精品石原莉奈 | 亚洲欧美日韩小说| 91浏览器在线视频| 亚洲国产欧美日韩另类综合 | 韩日精品视频一区| 中文字幕 久热精品 视频在线| 成人三级伦理片| 日韩美女视频19| 欧美日韩不卡视频| 国产高清精品久久久久| 亚洲免费在线电影| 91麻豆精品国产91久久久更新时间| 偷拍亚洲欧洲综合| 国产无一区二区| 欧美日韩电影在线| 99久久精品国产一区| 天天综合色天天综合| wwwwww.欧美系列| 欧美日韩在线免费视频| 国产精品自产自拍| 日本一区中文字幕| 亚洲综合丁香婷婷六月香| 精品国产伦一区二区三区观看体验 | 精品99一区二区| 欧美日韩在线播放| www.日韩精品| 精久久久久久久久久久| 午夜精品福利一区二区三区av| 国产精品网站一区| 久久精品这里都是精品| 日韩一区二区在线观看视频| 欧美日韩国产大片| 成人国产一区二区三区精品| 免费xxxx性欧美18vr| 亚洲成人午夜电影| 亚洲最新在线观看| 亚洲国产精品影院| 一区二区三区中文字幕| 亚洲品质自拍视频| 亚洲人精品午夜| 亚洲人成在线播放网站岛国| 国产精品毛片大码女人| 国产日韩精品久久久| 国产亲近乱来精品视频| 久久精品夜色噜噜亚洲aⅴ| www欧美成人18+| 国产欧美一区二区精品仙草咪| 久久久亚洲午夜电影| 国产女主播视频一区二区| 久久午夜老司机| 亚洲手机成人高清视频| 午夜欧美大尺度福利影院在线看| 亚洲午夜电影在线| 日韩av网站在线观看| 久久99精品网久久| 成人av网站在线观看免费| 91蝌蚪porny| 日韩精品一区二区三区三区免费 | 亚洲特级片在线| 亚洲成a人片综合在线| 国产美女在线精品| 91首页免费视频| 欧美电视剧免费全集观看| 国产欧美日韩不卡| 日韩二区三区在线观看| 国产精品99久久久| 欧美日韩日日骚| 亚洲国产成人自拍| 国产91高潮流白浆在线麻豆 | 2017欧美狠狠色| 亚洲一区二三区| 国产一区二区三区av电影| 欧美性三三影院| 亚洲天堂福利av| 欧美一二三区精品| 成人小视频在线| 一区二区三区久久久| 国产精品日产欧美久久久久| 亚洲国产精品综合小说图片区| 免费人成精品欧美精品| 欧美午夜精品久久久| 亚洲欧美综合色| 丁香天五香天堂综合| 精品久久久久久久久久久久久久久久久 | 91丨九色丨蝌蚪丨老版| 久久久99久久| 国产精品99久久久久久久女警 | av成人动漫在线观看| 国产夜色精品一区二区av| 久草精品在线观看| 日韩一区二区免费视频| 七七婷婷婷婷精品国产| 欧美一区二区三区免费| 日韩成人精品在线观看| 777午夜精品视频在线播放| 日韩电影网1区2区| 精品国产一区a| 国产精品亚洲一区二区三区在线 | 色综合一个色综合| 一区二区欧美在线观看| 欧美伦理电影网| 久久99精品网久久| 国产精品丝袜一区| 欧美影院精品一区| 久久97超碰色| 国产精品麻豆网站| 欧美三级视频在线观看| 日本vs亚洲vs韩国一区三区二区 | 欧美精品久久久久久久多人混战| 国产又黄又大久久| 最新欧美精品一区二区三区| 欧美视频一区在线| 国产精品18久久久久久久久 | 国产精品久久777777| 在线观看91视频| 成人综合在线观看| 日韩专区欧美专区| 国产精品第四页| 欧美精品一区二区三区在线 | 色婷婷久久久综合中文字幕 | 欧美一区二区三区视频免费播放| 国产精品一区二区在线播放| 三级一区在线视频先锋| 国产精品久久久久一区| 精品国产sm最大网站免费看| 在线日韩一区二区| 99精品国产一区二区三区不卡| 美女被吸乳得到大胸91| 香蕉加勒比综合久久| 亚洲人123区| 国产精品成人网| 中文幕一区二区三区久久蜜桃| 欧美大尺度电影在线| 欧美精品1区2区| 欧美日本免费一区二区三区| 99久久精品国产毛片| 99v久久综合狠狠综合久久| 成人福利视频网站| 91视频一区二区三区| av在线不卡电影| 91免费在线看| 91国模大尺度私拍在线视频| 色婷婷一区二区三区四区| heyzo一本久久综合| 91小视频在线免费看| 在线观看亚洲精品视频| 日韩欧美在线1卡| 日韩午夜电影av| 久久精品在线观看| 亚洲色欲色欲www| 亚洲成av人影院在线观看网| 蜜臀av国产精品久久久久| 裸体一区二区三区| 东方欧美亚洲色图在线| 97精品视频在线观看自产线路二| 色哟哟国产精品免费观看| 欧美日韩一区二区三区在线| 欧美精品一区二区在线观看| 国产精品黄色在线观看| 午夜精品国产更新| 国产91在线看| 制服视频三区第一页精品| 久久久久99精品国产片| 亚洲一二三专区| 国产a区久久久| 久久国产精品免费| 国产福利电影一区二区三区| 91福利精品视频| 国产日韩欧美麻豆| 首页国产欧美久久| eeuss影院一区二区三区| 日韩视频在线永久播放| 亚洲色图在线视频| 国产乱码精品1区2区3区| 欧美日韩精品一区二区天天拍小说 | 久久久久青草大香线综合精品| 悠悠色在线精品| 不卡在线视频中文字幕| 日韩一区二区三区在线观看| 亚洲另类中文字| 91老司机福利 在线| 国产精品视频yy9299一区| 国产黄人亚洲片| 久久久久久一级片| 国产成人综合在线观看| 久久久久久日产精品| 国产一区二区电影| 精品国产制服丝袜高跟|