Java、Android16(Hex)进制转byte,byte转16进制(Hex)

这里提供两种方案

	/*======方案一======*/
	
	/**
	 * byte转16进制
	 * @author YOLANDA
	 * @param src
	 * @return
	 */
	public static String byteToHex(byte[] src){   
		StringBuilder stringBuilder = new StringBuilder("");   
		if (src == null || src.length <= 0) {
			return null;   
		}   
		for (int i = 0; i < src.length; i++) {
			int v = src[i] & 0xFF;   
			String hv = Integer.toHexString(v);
			if (hv.length() < 2) {   
				stringBuilder.append(0);   
			}   
			stringBuilder.append(hv);   
		}   
		return stringBuilder.toString();   
	}
	
	/**
	 * 16进制转byte
	 * @author YOLANDA
	 * @param hexString
	 * @return
	 */
	public static byte[] hexToByte(String hexString) {
		if (TextUtils.isEmpty(hexString)) {
			return null;
		}
		hexString = hexString.toUpperCase(Locale.getDefault());
		int length = hexString.length() / 2;
		char[] hexChars = hexString.toCharArray();
		byte[] d = new byte[length];
		for (int i = 0; i < length; i++) {
			int pos = i * 2;
			d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
		}
		return d;
	}
	
	private static byte charToByte(int c) {
		return (byte) hexString.indexOf(c);
	}
	
	/*======方案二======*/

	/**
	 * byte[]转Hex字符串
	 * @author YOLANDA
	 * @param b
	 * @return
	 */
	public static String byte2Hex(byte[] b) {
		if (null == b)
			return null;
		StringBuffer sBuffer = new StringBuffer();
		String sTmep;
		for (int i = 0; i < b.length; i++) {
			sTmep = Integer.toHexString(b[i] & 0xFF);
			if (sTmep.length() == 1)
				sBuffer.append("0");
			sBuffer.append(sTmep.toUpperCase(Locale.getDefault()));
		}
		return sBuffer.toString();
	}

	/**
	 * Hex字符串转byte[]
	 * @author YOLANDA
	 * @param hexString
	 * @return
	 */
	public static byte[] hex2Byte(String hexString) {
		if (TextUtils.isEmpty(hexString)) {
			return null;
		}
		if (hexString.length() % 2 != 0) {
			hexString = hexString.substring(0, hexString.length() - 1) + "0" + hexString.substring(hexString.length() - 1, hexString.length());
		}
		int length = hexString.length() / 2;
		byte[] b = new byte[length];
		for (int i = 0; i < length; i++) {
			int k = Integer.parseInt(hexString.substring(i * 2, i * 2 + 2), 16);
			b[i] = (byte) k;
		}
		return b;
	}


你可能感兴趣的:(byte转16进制Hex)