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

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

?? lbpmessage.java

?? 中國移動定位引擎的客戶端
?? JAVA
字號:
package ffcs.lbp;

import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.text.SimpleDateFormat;
import java.util.Date;

/*
 * <p>Title: 與收發模塊的內部協議解析</p>
 * <p>Description: Lbp內部協議解析基類</p>
 * <p>Copyright: Copyright (c) 2008</p>
 * <p>Company: 福富軟件</p>
 * @author chenxin
 * @version 1.0 
 */

public abstract class LbpMessage {

	public static final int MAX_PACKAGE_SIZE = 2048;

	public static final byte ASCII_NULL = (byte) 0;

	private static final String US_ASCII = "US-ASCII";
	
	/**
	 * 消息的總長度
	 * @return
	 */
	public abstract int getPackLength();

	/**
	 *  消息的命令ID
	 * @return
	 */
	public abstract int getCommandId();

	/**
	 * 消息包的序列號
	 * @return
	 */
	public abstract int getSequenceId();
	/**
	 * 把buf消息轉換成消息對象
	 * @param buf 字節緩沖區
	 * @return true 消息解析成功 false 消息解析不成功
	 * @throws ProtocolException 消息解析異常,如消息大小不對,或者消息包的格式錯誤等
	 */
	public abstract boolean readMsg(ByteBuffer buf) throws ProtocolException;

	/**
	 * 把消息的各字段值寫入緩沖區
	 * @param buf 字節緩沖區
	 * @return true 寫入成功 false 寫入失敗
	 */
	public abstract boolean writeMsg(ByteBuffer buf);

	/**
	 * 從srcBf拷貝字節到destByte中
	 * @param srcBf ByteBuffer 源緩沖區
	 * @param destByte byte[] 目的數組
	 * @param maxLength int  最大長度
	 * @param terminate byte 結束符
	 * @return int
	 */
	public static int copyToByte(ByteBuffer srcBf, byte[] destByte,
			int maxLength, byte terminate) {
		int index = 0;
		if (srcBf == null && srcBf.remaining() < 1) {
			return 0;
		}
		while (srcBf.remaining() > 0) {
			byte b = srcBf.get();
			destByte[index++] = b;
			if (b == terminate || (index >= maxLength)) {
				break;
			}
		}
		return index;
	}

	/**
	 * 檢查對象是否為空
	 * @param o
	 * @param name
	 */
	public static void checkNull(Object o, String name) {
		if (o == null) {
			throw new NullPointerException(name);
		}
	}

	/**
	 * 返回消息簡單信息
	 * 該方法似toString方法,但比toString方法返回的信息更簡要,
	 * 主要用來調試用
	 * @return 返回字符串信息
	 */
	public String getSimpleInfo() {
		return toString();
	}

	/**
	 * 
	 * @param b
	 * @param offset
	 * @return
	 */
	public static String readCString(byte[] b, int offset) {
		String s;
		int p = offset;
		while (b[p] != (byte) 0) {
			p++;
		}
		try {
			if (p > offset) {
				s = new String(b, offset, p - offset, US_ASCII);
			} else {
				s = "";
			}
		} catch (java.io.UnsupportedEncodingException x) {
			s = "";
		}
		return s;
	}

	/**
	 * 對字符串補指定的字符
	 * @param src
	 * @param length
	 * @param c
	 * @return
	 */
	public static String lpad(String src, int length, char c) {
		if (src == null || src.length() >= length) {
			return src;
		}
		String dest = src;
		char[] temp = new char[length - src.length()];
		for (int i = 0; i < length - src.length(); i++) {
			temp[i] = c;
		}

		return (new String(temp) + dest);
	}

	/**
	 * Read a nul-terminated ASCII string from a ByteBuffer.
	 * @param bf
	 * @return
	 */
	public static String readCString(ByteBuffer bf) {
		return readCString(bf, 256);
	}

	/**
	 * Read a nul-terminated ASCII string from a ByteBuffer.
	 * @param bf
	 * @param maxReadLength 最大讀取數
	 * @return
	 */
	public static String readCString(ByteBuffer bf, int maxReadLength) {

		if (bf == null && bf.remaining() < 1) {
			return null;
		}
		byte[] data = new byte[maxReadLength];
		int index = 0;
		String s = null;
		while (bf.remaining() > 0) {
			if (index >= maxReadLength) {
				break;
			}
			/*if (index >= maxReadLength) {
				maxReadLength *= 2;
				byte[] temp = new byte[maxReadLength];
				System.arraycopy(data, 0, temp, 0, data.length);
				data = temp;
			}*/
			data[index] = bf.get();
			if (data[index] == ASCII_NULL) {
				break;
			}
			index++;
		}
		try {
			if(index>0){
				s = new String(data, 0, index, US_ASCII);
			}
		} catch (java.io.UnsupportedEncodingException x) {
			x.printStackTrace();
			s = null;
		}
		return s;

	}

	/**
	 * 把寫符串以"C-Octet String"方式(以NULL結束的ASCII字符串)寫入ByteBuffer
	 * @param bf  要寫入的ByteBuffer
	 * @param s 要寫入的字符串
	 */
	public static void writeCString(ByteBuffer bf, String s) {
		if (s != null) {
			bf.put(s.getBytes());
		}
		bf.put(ASCII_NULL);
	}

	/**
	 * 把字符串以"Octet String"方式(不強制以0x00 結尾的定長字符串。當位數不足時,
	 在不明確注明的情況下,應左對齊,右補0x00。在
	 明確注明的情況下,以該字段的明確注明為準。)寫入ByteBuffer
	 * @param bf  要寫入的ByteBuffer
	 * @param s 要寫入的字符串
	 */
	public static void writeOString(ByteBuffer bf, String s, int len) {
		if (s == null) {
			bf.put(new byte[len]);
			return;
		}
		int l = s.getBytes().length;
		bf.put(s.getBytes());
		if (l < len) {
			for (int i = 0; i < (len - l); i++)
				bf.put(ASCII_NULL);
		}
	}

	/**
	 * 把字符串以"Octet String"方式(不強制以0x00 結尾的定長字符串。當位數不足時,
	 在不明確注明的情況下,應左對齊,右補0x00。在
	 明確注明的情況下,以該字段的明確注明為準。)寫入ByteBuffer
	 * @param bf  要寫入的ByteBuffer
	 * @param s 要寫入的字符串
	 */
	public static void writeOString(ByteBuffer bf, String s, int len,
			byte msgFormat) {
		String code = "";
		if (msgFormat == (byte) 0)
			code = US_ASCII;
		else if (msgFormat == (byte) 15)
			code = "GBK";
		else if (msgFormat == (byte) 8)
			code = "UTF-16";
		else
			code = "GBK";
		int l = 0;
		try {
			l = s.getBytes(code).length;

			bf.put(s.getBytes(code));
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		if (l < len) {
			for (int i = 0; i < (len - l); i++)
				bf.put(ASCII_NULL);
		}
	}

	/**
	 * 把字符串以"Octet String"方式(不強制以0x00 結尾的定長字符串。當位數不足時,
	 在不明確注明的情況下,應左對齊,右補0x00。在
	 明確注明的情況下,以該字段的明確注明為準。)讀出ByteBuffer
	 * @param bf  要寫入的ByteBuffer
	 * @param s 要寫入的字符串
	 * modi by chenxin 2008.3.14  把循環改成從后往前循環
	 */

	public static String readOString(ByteBuffer bf, int len) {

		String s = null;
		byte[] data = new byte[len];
		bf.get(data);
		int index = data.length;
		for (int i =  data.length-1; i >0; i--) {

			if (data[i] != ASCII_NULL) {
				index = i;
				break;
			}
		}
/*		if (index == data.length)
			index = len;*/
        if(index>0){
        	s = new String(data, 0, index);
        }

		return s;

	}

	/**
	 * 把字符串以"Octet String"方式(不強制以0x00 結尾的定長字符串。當位數不足時,
	 在不明確注明的情況下,應左對齊,右補0x00。在
	 明確注明的情況下,以該字段的明確注明為準。)讀出ByteBuffer
	 * @param bf  要寫入的ByteBuffer
	 * @param s 要寫入的字符串
	 * modi by chenxin 2008.3.14  把循環改成從后往前循環
	 */

	public static String readOString(ByteBuffer bf, int len, byte msgFormat) {

		String s = null;
		byte[] data = new byte[len];
		bf.get(data);
		int index = -1;
		if (msgFormat != (byte) 8)
			for (int i =  data.length-1; i >0; i--) {
				if (data[i] != ASCII_NULL) {
					index = i;
					break;
				}
			}
		else
			index = data.length;
		String code = "";
		if (msgFormat == (byte) 0)
			code = US_ASCII;
		else if (msgFormat == (byte) 15)
			code = "GBK";
		else if (msgFormat == (byte) 8)
			code = "UTF-16";
		else
			code = "GBK";
		try {
			s = new String(data, 0, index, code);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return s;
	}

	public String toString() {
		return super.toString();
	}

	/**
	 * Read an ASCII string from a byte array.
	 * @param b The byte array to read from.
	 * @param offset The offset into <code>b</code> to begin reading from.
	 * @param len The length of the string to read.
	 * @return A string decoded from <code>b</code> of length <code>len</code>.
	 * ASCII is used to convert the bytes into characters.
	 */
	public static String readString(byte[] b, int offset, int len) {
		String s = "";
		try {
			if (len > 0) {
				s = new String(b, offset, len, US_ASCII);
			}
		} catch (java.io.UnsupportedEncodingException x) {
		}
		return s;
	}

	public String strToHex(String val) {
		if (val == null)
			return "NULL";
		byte b[] = val.getBytes();
		return byte2hexString(b);

	}

	public static String byte2hexString(byte[] bytes) {
		if (bytes == null) {
			return null;
		}
		StringBuffer buf = new StringBuffer(bytes.length * 2);
		for (int i = 0; i < bytes.length; i++) {
			if (((int) bytes[i] & 0xff) < 0x10) {
				buf.append("0");
			}

			buf.append(Long.toString((int) bytes[i] & 0xff, 16));
			if (i < (bytes.length - 1)) {
				buf.append(' ');
			}
		}
		return buf.toString();
	}

	public static String byte2hexString(ByteBuffer bufer) {
		if (bufer == null) {
			return null;
		}
		StringBuffer buf = new StringBuffer(bufer.remaining() * 2);
		while (bufer.hasRemaining()) {
			byte b = bufer.get();
			if ((((int) b) & 0xff) < 0x10) {
				buf.append("0");
			}

			buf.append(Long.toString((int) b & 0xff, 16));
			if (bufer.remaining() > 0) {
				buf.append(' ');
			}
		}
		return buf.toString();
	}

	public static String byteToHex(byte val) {
		//  if(val==null) return "NULL";
		String stmp = (java.lang.Integer.toHexString(val & 0XFF));
		if (stmp.length() == 1)
			stmp = "0" + stmp;
		return stmp;

	}

	public String intToHex(int val) {

		String s = Integer.toHexString(val);
		String tmp = "";
		for (int i = 8; i > s.length(); i--)
			tmp += "0";
		return tmp + s;

	}

	public static int byteToUnsignInt(byte b) {
		return (0x000000ff & b);
	}

	public static byte intToByte(int i) {
		return ((byte) (0x000000ff & i));
	}

	public static int bytesToInt(byte[] b, int offset, int size) {
		int num = 0;
		int sw = 8 * (size - 1);

		for (int loop = 0; loop < size; loop++) {
			num |= ((int) b[offset + loop] & 0x00ff) << sw;
			sw -= 8;
		}

		return num;
	}
	
	/**
	 * 按指定的時間格式轉換系統當前的時間為字符串
	 * @param dateFormat 時間格式
	 * @return 時間字符串
	 */
	public static String dateConvertToStr(String dateFormat){
		return dateConvertToStr(new Date(),dateFormat);
	}
	/**
	 * 把指定的時間根據指定的時間格式,轉換為字符串
	 * @param date 時間
	 * @param dateFormat 時間格式
	 * @return 時間字符串
	 */
	public static String dateConvertToStr(Date date,String dateFormat){
		SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
		return sdf.format(date);
	}
	
	/**
	 * 單元測試
	 * @param args
	 * @throws Exception
	 */
	public static void main(String[] args)throws Exception{
		String s = dateConvertToStr("yyyyMMddHHmmssSSS");
		System.out.println(s);
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜桃传媒麻豆第一区在线观看| 国产综合一区二区| 久久久亚洲精华液精华液精华液| 97久久精品人人爽人人爽蜜臀| 黑人精品欧美一区二区蜜桃 | 91社区在线播放| 国产91丝袜在线播放九色| 麻豆精品久久久| 色菇凉天天综合网| 色综合色综合色综合| 色噜噜狠狠一区二区三区果冻| 日韩免费看网站| 久久亚洲影视婷婷| 欧美国产精品劲爆| 国产精品乱码一区二区三区软件| 中文字幕+乱码+中文字幕一区| 免费成人av在线| 国产一区二区三区美女| 成人激情图片网| 在线中文字幕一区二区| 成人欧美一区二区三区视频网页| 亚洲欧洲综合另类| 午夜精品久久久| 毛片基地黄久久久久久天堂| 色哟哟一区二区在线观看 | 一本大道av一区二区在线播放| 欧美v日韩v国产v| 国产精品久久久99| 日日夜夜精品视频天天综合网| 狠狠色丁香九九婷婷综合五月| 欧美乱妇15p| 久久九九国产精品| 亚洲成a人v欧美综合天堂下载 | 欧美日韩一区二区欧美激情| 日韩欧美国产三级电影视频| 日韩精品乱码免费| 日韩精品在线网站| 蜜桃av一区二区三区| 日韩精品一区二区三区在线| 免费av网站大全久久| 精品免费视频一区二区| 国产一二三精品| 国产欧美1区2区3区| 婷婷中文字幕综合| 91精品国产综合久久婷婷香蕉| 国产精品卡一卡二卡三| av午夜精品一区二区三区| 日韩三级在线观看| 亚洲精品午夜久久久| 国产一区二区福利| 国产精品女主播av| 欧美综合久久久| 中文字幕五月欧美| 欧美主播一区二区三区| 青青草视频一区| 国产欧美精品一区二区三区四区| 91视频在线观看| 亚洲国产va精品久久久不卡综合 | 日本伊人色综合网| 欧洲亚洲精品在线| 免费成人你懂的| 中文无字幕一区二区三区| 一本久久a久久精品亚洲| 亚洲国产精品影院| 久久精品一区二区| 99久久99久久综合| 免费观看成人鲁鲁鲁鲁鲁视频| 久久久久久电影| 91久久国产最好的精华液| 美女精品自拍一二三四| 国产精品丝袜91| 在线不卡免费欧美| 国产精品自在在线| 久久久一区二区三区| 色综合天天综合狠狠| 亚洲私人黄色宅男| 91免费在线视频观看| 免费不卡在线视频| 亚洲男人的天堂一区二区| 欧美一区二区三区视频| 琪琪久久久久日韩精品| 亚洲码国产岛国毛片在线| 制服.丝袜.亚洲.另类.中文 | 国产精品网站在线| 欧美老人xxxx18| 岛国精品一区二区| 国产精品成人一区二区三区夜夜夜 | 欧洲一区在线电影| 国产suv精品一区二区883| 视频在线在亚洲| 亚洲影院久久精品| 91精品久久久久久蜜臀| 色噜噜狠狠成人中文综合| 韩国一区二区三区| 免费观看一级特黄欧美大片| 樱花影视一区二区| 中文字幕在线一区二区三区| 久久亚区不卡日本| 日韩欧美电影在线| 51精品久久久久久久蜜臀| 色综合久久88色综合天天6| 国产成人高清视频| 一区二区理论电影在线观看| 欧美日韩亚洲综合一区二区三区| 99久久精品国产网站| 国产传媒欧美日韩成人| 国产一区二区导航在线播放| 狠狠色狠狠色综合日日91app| 日本美女视频一区二区| 石原莉奈在线亚洲二区| 日韩精品亚洲一区二区三区免费| 一区二区三区成人| 亚洲图片欧美视频| 亚洲一区二区三区四区不卡| 一区二区三区在线免费| 亚洲精品乱码久久久久久久久 | 在线观看一区日韩| 色欧美日韩亚洲| 91福利视频久久久久| 91国内精品野花午夜精品| 91福利在线播放| 欧美日韩三级一区二区| 欧美三级一区二区| 欧美精品乱码久久久久久| 欧美一三区三区四区免费在线看 | 精品国产凹凸成av人网站| 91在线码无精品| 日本韩国精品一区二区在线观看| 在线观看亚洲精品| 欧美久久免费观看| 日韩精品专区在线影院观看 | 欧美日韩一本到| 日韩一区二区三区四区五区六区| 日韩精品中文字幕在线一区| www精品美女久久久tv| 国产女人aaa级久久久级 | 91视频www| 欧美高清精品3d| 亚洲精品一区二区精华| 日本一二三四高清不卡| 亚洲三级电影网站| 日韩中文字幕91| 国产精品自在在线| 91美女在线观看| 欧美精品高清视频| 久久久.com| 亚洲午夜免费视频| 国产在线麻豆精品观看| 99久久99久久精品免费看蜜桃| 欧美日韩国产综合一区二区三区| gogo大胆日本视频一区| 色一区在线观看| 精品剧情v国产在线观看在线| 日本一区二区三区高清不卡| 亚洲人成7777| 激情综合一区二区三区| 蜜臀av性久久久久av蜜臀妖精| 国产毛片一区二区| 欧美系列一区二区| 欧美午夜精品久久久| 久久一日本道色综合| 亚洲免费观看高清完整版在线观看熊 | 美国精品在线观看| 94-欧美-setu| 欧美成人性战久久| 一区二区三区精品视频| 国产盗摄精品一区二区三区在线 | 国产91丝袜在线观看| 91麻豆精品91久久久久同性| 国产精品免费视频观看| 日产国产高清一区二区三区| 99久久婷婷国产精品综合| 亚洲欧美激情一区二区| 久久成人18免费观看| 久久99这里只有精品| 在线观看视频91| 欧美国产激情一区二区三区蜜月 | 亚洲欧洲韩国日本视频| 韩国视频一区二区| 91精品国产综合久久久久久| 亚洲日本在线观看| 粉嫩13p一区二区三区| 欧美电视剧在线观看完整版| 亚洲一区二区三区在线播放| 不卡影院免费观看| 精品国产一区二区三区不卡| 亚洲国产成人porn| 欧美性一二三区| 亚洲欧美日韩中文字幕一区二区三区 | 日韩免费观看高清完整版| 亚洲一区二区三区中文字幕| 色欧美乱欧美15图片| 国产精品久久综合| 国产不卡在线播放| 国产亚洲综合色| 国产精品小仙女| 久久久不卡网国产精品二区| 久久99久久久欧美国产| 日韩免费在线观看| 蜜臀av国产精品久久久久|