测试代码
package cn.java.codec.hex; public class Test { public static void main(String[] args) { String str = "test"; System.out.println("test string : "+str); String hexEncode = HexUtil.encode(str.getBytes()); System.out.println("HexUtil.encode Result : "+hexEncode); byte[] bytes = HexUtil.decode(hexEncode); System.out.println("HexUtil.decode Result : "+new String(bytes)); } }
输出内容
test string : test HexUtil.encode Result : 74657374 HexUtil.decode Result : test
工具类
package cn.java.codec.hex; public class HexUtil { /** * 字节流转成十六进制表示 */ public static String encode(byte[] src) { String strHex = ""; StringBuilder sb = new StringBuilder(""); for (int n = 0; n < src.length; n++) { strHex = Integer.toHexString(src[n] & 0xFF); sb.append((strHex.length() == 1) ? "0" + strHex : strHex); // 每个字节由两个字符表示,位数不够,高位补0 } return sb.toString().trim(); } /** * 字符串转成字节流 */ public static byte[] decode(String src) { int m = 0, n = 0; int byteLen = src.length() / 2; // 每两个字符描述一个字节 byte[] ret = new byte[byteLen]; for (int i = 0; i < byteLen; i++) { m = i * 2 + 1; n = m + 1; int intVal = Integer.decode("0x" + src.substring(i * 2, m) + src.substring(m, n)); ret[i] = Byte.valueOf((byte)intVal); } return ret; } }