⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pub_tools.java

📁 福建鑫诺话机客户端接受程序
💻 JAVA
字号:
package telproject;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Company: powerleader.com.cn</p>
 * @author
 * @version 1.0
 */

import java.util.*;
// import java.util.regex.*;
import java.util.StringTokenizer;

/**
 * 一些常用的函数
 */
public class Pub_Tools {

	/**
	 * 将 byte 数组转化成整数
	 * 
	 * @param b
	 *            字节数组
	 * @param iFrom
	 *            开始转换位置
	 * @param iLen
	 *            要转换的字节数
	 * @return 转换后结果
	 */
	public static int b2i(byte[] b, int iFrom, int iLen) {
		int iRet = 0;
		int iTep;
		for (int i = iFrom; i < iFrom + iLen && i < b.length; i++) {
			iTep = b[i];
			if (iTep < 0) {
				iTep += 256;
			}

			iRet = (iRet << 8) | iTep;
		}
		return iRet;
	}

	/**
	 * 将 整数转化成字节数组
	 * 
	 * @param iData
	 *            要转换的整数
	 * @param b
	 *            转换后存放结果的字节数组
	 * @param iFrom
	 *            存放字节起始位置
	 * @param iLen
	 *            将整数转换成的字节数
	 */
	public static void i2b(int iData, byte[] b, int iFrom, int iLen) {
		int id = iData;
		int iOff = iLen - 1;
		if (iOff < 0) {
			iOff = 0;
		}
		for (int i = iFrom; i < iFrom + iLen && i < b.length; i++) {
			if (i - iFrom < 4) {
				b[i] = (byte) ((id >> ((iOff - (i - iFrom)) * 8)) & 0xFF);
			} else {
				b[i] = 0;
			}
		}
	}

	/**
	 * 将 字符串转化成字节
	 * 
	 * @param s
	 *            要转换的字符串
	 * @param b
	 *            转换后存放结果的字节数组
	 * @param iFrom
	 *            存放字节起始位置
	 * @param iLen
	 *            将字符串转换成的字节数
	 * @param bFill
	 *            如字符字节数不足,则填充字节
	 */
	public static void s2b(String s, byte[] b, int iFrom, int iLen, byte bFill) {
		byte[] t = null;
		if (s != null && s.length() > 0) {
			t = s.getBytes();
		}
		if (t == null) {
			for (int i = iFrom; i < iFrom + iLen && i < b.length; i++) {
				b[i] = bFill;
			}
		} else {
			for (int i = iFrom; i < iFrom + iLen && i < b.length; i++) {
				if (i - iFrom < t.length) {
					b[i] = t[i - iFrom];
				} else {
					b[i] = bFill;
				}
			}
		}
	}

	/**
	 * 将 字节转化成字符串
	 * 
	 * @param b
	 *            转换后存放结果的字节数组
	 * @param iFrom
	 *            存放字节起始位置
	 * @param iLen
	 *            将字符串转换成的字节数
	 * @param bCut
	 *            字符串的尾部要切除的字符
	 */
	public static String b2s(byte[] b, int iFrom, int iLen, byte bCut) {
		if (b == null || iFrom + iLen > b.length) {
			return null;
		}
		if (iLen < 1) {
			return "";
		}

		String s = new String(b, iFrom, iLen);
		if (s == null || s.length() == 0) {
			return "";
		}
		int i = s.length() - 1;
		while (i >= 0 && s.charAt(i) == (char) bCut) {
			i--;
		}
		if (i < 0) {
			return "";
		}
		return s.substring(0, i + 1);
	}

	/**
	 * 将 字节转化成字符串,到字节值等于 bEnd 位置
	 * 
	 * @param b
	 *            转换后存放结果的字节数组
	 * @param iFrom
	 *            存放字节起始位置
	 * @param bEnd
	 *            分界字节
	 */
	public static String b2s(byte[] b, int iFrom, byte bEnd) {
		if (b == null || iFrom >= b.length) {
			return null;
		}
		int iTo = b.length;
		for (int i = iFrom; i < b.length; i++) {
			if (b[i] == bEnd) {
				iTo = i;
				break;
			}
		}
		if (iTo <= iFrom) {
			return "";
		}
		return new String(b, iFrom, iTo - iFrom);
	}

	public static byte[] h2b(String sVal) {
		if (sVal == null || sVal.length() == 0) {
			return null;
		}
		sVal = sVal.toUpperCase();
		int iLen = sVal.length();
		if (iLen % 2 == 1) {
			sVal = "0" + sVal;
		}
		iLen = sVal.length() / 2;
		byte[] b = new byte[iLen];
		char c1, c2;
		for (int i = 0; i < iLen; i++) {
			c1 = sVal.charAt(2 * i);
			c2 = sVal.charAt(2 * i + 1);
			b[i] = c2b(c1, c2);
		}
		return b;
	}

	public static byte c2b(char c1, char c2) {
		byte b1, b2;
		if (c1 >= 'A') {
			b1 = (byte) (c1 - 'A' + 10);
		} else {
			b1 = (byte) (c1 - '0');
		}
		if (c2 >= 'A') {
			b2 = (byte) (c2 - 'A' + 10);
		} else {
			b2 = (byte) (c2 - '0');
		}
		return (byte) ((b1 << 4) | b2);
	}

	/**
	 * 将 字节转化成HEX字符串
	 * 
	 * @param b
	 *            转换后存放结果的字节数组
	 * @param iFrom
	 *            存放字节起始位置
	 * @param iLen
	 *            将字符串转换成的字节数
	 * @param bCut
	 *            字符串的尾部要切除的字符
	 */
	public static String b2h(byte b) {
		int i = b;

		if (i < 0) {
			i += 256;
		}
		String s = "";
		int ih = i >> 4;
		int il = i & 0x0F;
		if (ih >= 10) {
			ih += 'A' - 10;
		} else {
			ih += '0';
		}
		if (il >= 10) {
			il += 'A' - 10;
		} else {
			il += '0';
		}
		return s = String.valueOf((char) ih) + String.valueOf((char) il);
	}

	/**
	 * 将 字节转化成HEX字符串
	 * 
	 * @param b
	 *            转换后存放结果的字节数组
	 * @param iFrom
	 *            存放字节起始位置
	 * @param iLen
	 *            将字符串转换成的字节数
	 * @param bCut
	 *            字符串的尾部要切除的字符
	 */
	public static void showBin(byte[] b) {
		if (b == null) {
			System.out.println("null bytes!");
			return;
		}
		showBin(b, 0, b.length);

	}

	public static void showBin(byte[] b, int iFrom, int iLen) {
		if (b == null) {
			System.out.println("null bytes!");
			return;
		}
		System.out.println("bytes length=" + b.length);
		for (int i = iFrom; i < b.length && i < iFrom + iLen; i++) {
			if (i > 0 && i % 16 == 0) {
				System.out.println();
			}
			System.out.print(b2h(b[i]) + "-");
		}
		System.out.println();
	}

	/**
	 * 将 字节拷贝
	 * 
	 * @param fb
	 *            源字节数组
	 * @param tb
	 *            目的字节数组
	 * @param iFrom
	 *            目的存放起始位置
	 * @param bCut
	 *            要copy 的长度
	 * @param bFill
	 *            不足时填充字节
	 */
	public static void addb(byte[] fb, byte[] tb, int iFrom, int iLen,
			byte bFill) {
		int iAdd = 0;
		if (fb != null) {
			for (int i = iFrom; i < tb.length && i < iFrom + iLen
					&& i < iFrom + fb.length; i++) {
				tb[i] = fb[i - iFrom];
				iAdd++;
			}
		}
		while (iAdd < iLen && iFrom + iAdd < tb.length) {
			tb[iFrom + iAdd] = bFill;
			iAdd++;
		}
	}

	/**
	 * 将 从字节中截取字节
	 * 
	 * @param fb
	 *            源字节数组
	 * @param iFrom
	 *            目的存放起始位置
	 * @param iLen
	 *            要copy 的长度
	 * @param bCut
	 *            从截取字节中要截去的字节
	 */
	public static byte[] cutb(byte[] fb, int iFrom, int iLen, byte bCut) {
		int iAdd = 0;
		if (fb == null || iFrom >= fb.length) {
			return null;
		}
		int it = iFrom + iLen;
		if (it > fb.length) {
			it = fb.length;
		}

		it--;
		while (it >= iFrom && fb[it] == bCut) {
			it--;
		}

		if (it < iFrom) {
			return null;
		}
		int iLef = it + 1 - iFrom;
		byte[] r = new byte[iLef];
		System.arraycopy(fb, iFrom, r, 0, iLef);
		return r;
	}

	/**
	 * 将格式为 yyyymmddhhmmss 的串转换成 SQL-Server Data/Time
	 */
	public static String toDate(String s) {
		if (s == null || s.length() < 8) {
			return null;
		}
		String s0 = s;
		long l = -1;
		try {
			l = Long.parseLong(s0);
		} catch (Exception e) {
		}
		if (l <= 0) {
			s0 = "20000101";
		}
		while (s0.length() < 14) {
			s0 += "0";
		}
		String sy = s0.substring(0, 4);
		String sm = s0.substring(4, 6);
		String sd = s0.substring(6, 8);
		String sh = s0.substring(8, 10);
		String mi = s0.substring(10, 12);
		String ss = s0.substring(12, 14);

		String s1 = sy + "-" + sm + "-" + sd + " " + sh + ":" + mi + ":" + ss;
		String sDate = "convert(datetime,'" + s1 + "')";
		return sDate;
	}

	/**
	 * 取得系统日期,格式为 yyyymmdd
	 */
	public static String getDate() {
		Calendar c = Calendar.getInstance();
		int iYear = c.get(Calendar.YEAR);
		int iMon = c.get(Calendar.MONTH) + 1;
		int iDay = c.get(Calendar.DAY_OF_MONTH);
		String sYear = String.valueOf(iYear);
		// if(iYear<10) sYear="0"+sYear;

		String sMon = String.valueOf(iMon);
		if (iMon < 10) {
			sMon = "0" + sMon;

		}
		String sDay = String.valueOf(iDay);
		if (iDay < 10) {
			sDay = "0" + sDay;

		}
		return sYear + "-" + sMon + "-" + sDay;
	}

	/**
	 * 取得系统日期,格式为 hhmmss
	 */
	public static String getTime() {
		Calendar c = Calendar.getInstance();
		int iHour = c.get(Calendar.HOUR_OF_DAY);
		int iMin = c.get(Calendar.MINUTE);
		int iSec = c.get(Calendar.SECOND);

		String sHour = String.valueOf(iHour);
		if (iHour < 10) {
			sHour = "0" + sHour;

		}
		String sMin = String.valueOf(iMin);
		if (iMin < 10) {
			sMin = "0" + sMin;

		}
		String sSec = String.valueOf(iSec);
		if (iSec < 10) {
			sSec = "0" + sSec;

		}
		return sHour + ":" + sMin + ":" + sSec;
	}

	/**
	 * 取得系统日期,格式为 MMDDHHMMSS
	 */
	public static String getTimeStamp() {
		Calendar c = Calendar.getInstance();
		int iMon = c.get(Calendar.MONTH) + 1;
		int iDay = c.get(Calendar.DAY_OF_MONTH);
		int iHour = c.get(Calendar.HOUR_OF_DAY);
		int iMin = c.get(Calendar.MINUTE);
		int iSec = c.get(Calendar.SECOND);

		String sMon = String.valueOf(iMon);
		if (iMon < 10) {
			sMon = "0" + sMon;

		}
		String sDay = String.valueOf(iDay);
		if (iDay < 10) {
			sDay = "0" + sDay;

		}
		String sHour = String.valueOf(iHour);
		if (iHour < 10) {
			sHour = "0" + sHour;

		}
		String sMin = String.valueOf(iMin);
		if (iMin < 10) {
			sMin = "0" + sMin;

		}
		String sSec = String.valueOf(iSec);
		if (iSec < 10) {
			sSec = "0" + sSec;

		}
		return sMon + sDay + sHour + sMin + sSec;
	}

	public static String get14TimeStamp() {
		Calendar c = Calendar.getInstance();
		int iYear = c.get(Calendar.YEAR);
		int iMon = c.get(Calendar.MONTH) + 1;
		int iDay = c.get(Calendar.DAY_OF_MONTH);
		int iHour = c.get(Calendar.HOUR_OF_DAY);
		int iMin = c.get(Calendar.MINUTE);
		int iSec = c.get(Calendar.SECOND);

		String sYear = String.valueOf(iYear);

		String sMon = String.valueOf(iMon);
		if (iMon < 10) {
			sMon = "0" + sMon;

		}
		String sDay = String.valueOf(iDay);
		if (iDay < 10) {
			sDay = "0" + sDay;

		}
		String sHour = String.valueOf(iHour);
		if (iHour < 10) {
			sHour = "0" + sHour;

		}
		String sMin = String.valueOf(iMin);
		if (iMin < 10) {
			sMin = "0" + sMin;

		}
		String sSec = String.valueOf(iSec);
		if (iSec < 10) {
			sSec = "0" + sSec;

		}
		return sYear + sMon + sDay + sHour + sMin + sSec;
	}

	public static boolean isNumber(String s) {
		if (s == null || s.length() == 0) {
			return false;
		}
		char c;
		for (int i = 0; i < s.length(); i++) {
			c = s.charAt(i);
			if (c < '0' || c > '9') {
				return false;
			}
		}
		return true;
	}

	public static String getString(byte[] b, int iFrom, int iLen) {

		if (b == null || b.length < iFrom + iLen) {
			return null;
		}

		char c;
		String s = "";
		int b1, b2;

		for (int i = iFrom; i < iFrom + iLen; i++) {

			b1 = b[i];
			if (b1 < 0) {
				b1 += 256;
			}
			i++;
			if (i < iFrom + iLen) {
				b2 = b[i];
			} else {
				b2 = 0;
			}
			if (b2 < 0) {
				b2 += 256;
			}
			// ////////////
			c = (char) ((b1 << 8 | b2));
			s = s + String.valueOf(c);
			/*
			 * if(b1==0){ if(b2!=0){ s=s+String.valueOf((char)b2); } }else{
			 * if(b2!=0){ c=(char)((b1<<8 | b2)); s=s+String.valueOf(c);
			 * }else{ s=s+String.valueOf((char)b1); } }
			 */
		}
		return s;
	}

	public static String getString1(byte[] b, int iFrom, int iLen) {
		if (b == null || b.length < iFrom + iLen) {
			return null;
		}
		char c;
		String s = "";
		int b1, b2;

		boolean bSub = false;
		for (int i = iFrom; i < iFrom + iLen; i++) {
			if (b[i] == 0) {
				bSub = true;

			}
		}
		if (!bSub) {
			try {
				String st = new String(b, iFrom, iLen);
				if (st != null && st.length() == iLen) {
					return st;
				}
			} catch (Exception e) {
			}
		}

		for (int i = iFrom; i < iFrom + iLen; i++) {
			b1 = b[i];
			if (b1 < 0) {
				b1 += 256;

			}
			i++;
			if (i < iFrom + iLen) {
				b2 = b[i];
			} else {
				b2 = 0;

			}
			if (b2 < 0) {
				b2 += 256;
			}
			if (b1 == 0) {
				if (b2 != 0) {
					s = s + String.valueOf((char) b2);
				}
			} else {
				if (b2 != 0) {
					c = (char) ((b1 << 8 | b2));
					s = s + String.valueOf(c);
				} else {
					s = s + String.valueOf((char) b1);
				}
			}
		}
		return s;
	}

	// ///截去字符串首尾的字符
	public static String trimChar(String strTemp, String charTemp) {
		if (strTemp == null || strTemp.equals("")) {
			return "";
		}

		if (charTemp == null || charTemp.equals("")) {
			charTemp = ",";
			// System.out.println(strTemp);
		}
		if (strTemp.startsWith(charTemp)) {
			strTemp = strTemp
					.substring(charTemp.length(), strTemp.length() - 1);

		}
		if (strTemp.endsWith(charTemp)) {
			strTemp = strTemp
					.substring(0, strTemp.length() - charTemp.length());
			// System.out.println(strTemp);
		}
		return strTemp;
	}

	// ///按字串切个字串返会字串数组
	public static String[] splite(String str, String charTemp) {
		if (charTemp == null || charTemp.equals("")) {
			charTemp = ",";

		}
		StringTokenizer token = new StringTokenizer(str, charTemp);
		String[] result = new String[token.countTokens()];
		int i = 0;
		while (token.hasMoreTokens()) {
			result[i] = token.nextToken();
			i++;
		}
		return result;
	}

	// 替换字符串
	public static String replaceStr(String str, String pattern, String replace) {
		int s = 0;
		int e = 0;
		StringBuffer result = new StringBuffer();
		while ((e = str.indexOf(pattern, s)) >= 0) {
			result.append(str.substring(s, e));
			result.append(replace);
			s = e + pattern.length();
		}
		result.append(str.substring(s));
		return result.toString();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -