Java String和十六进制字符串互相转换 示例

public class HelloWorld {
    public static void main(String []args) {
		
	   String str = "Hello World!";
       System.out.println(str);
		
	   String hexStr = str2HexStr(str);
	   System.out.println(hexStr);
	   
	   String str2 = hexStr2Str(hexStr);
	   System.out.println(str2);
		
    }
	
	/**
      * 字符串转换成为16进制(无需Unicode编码)
      * @param str
      * @return
     */
    public static String str2HexStr(String str) {
		char[] chars = "0123456789ABCDEF".toCharArray();
		StringBuilder sb = new StringBuilder("");
		byte[] bs = str.getBytes();
		int bit;
		for (int i = 0; i < bs.length; i++) {
			bit = (bs[i] & 0x0f0) >> 4;
			// 注意此处,有的地方不使用空格分隔
			sb.append(" " + chars[bit]);
			bit = bs[i] & 0x0f;
			sb.append(chars[bit]);
		}
		return sb.toString().trim();
    }
	
	 /**
      * 16进制直接转换成为字符串(无需Unicode解码)
      * @param hexStr
      * @return
     */
    public static String hexStr2Str(String hexStr) {
		String str = "0123456789ABCDEF";
		// 注意此处,有的地方不使用空格分隔
		hexStr = hexStr.replace(" ", "");
		char[] hexs = hexStr.toCharArray();
		byte[] bytes = new byte[hexStr.length() / 2];
		int n;
		for (int i = 0; i < bytes.length; i++) {
			n = str.indexOf(hexs[2 * i]) * 16;
			n += str.indexOf(hexs[2 * i + 1]);
			bytes[i] = (byte) (n & 0xff);
		}
		return new String(bytes);
    }


}

参考:

【Java】string和十六进制字符串互相转换_K1nney的博客-CSDN博客_string转16进制字符串

猜你喜欢

转载自blog.csdn.net/u013288190/article/details/125504663