原理很简单,直接贴源代码吧。

/**
 * @author wangtao
 * @version 2008.8.14
 */
public class Util {
    public static char[] hexDigits = 
    {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};

    /**
     * @notes 字节数组转化为字符串
     * @param bytes
     * @return String
     */
    public static String toHexString(byte[] bytes) {
        char[] chars = new char[bytes.length * 2];

        for (int i = 0; i < bytes.length; i++) {
            int b = bytes[i];
            chars[i * 2] = Util.hexDigits[(b & 0xF0) >> 4];
            chars[i * 2 + 1] = Util.hexDigits[b & 0x0F];
        }

        return new String(chars);
    }

    /**
     * @notes 字符串转化为字节数组
     * @param str
     * @return byte[]
     */
    public static byte[] toByteArray(String str) { 
        int length = str.length() / 2;
        byte[] bytes = new byte[length];
        byte[] source = str.getBytes();

        for (int i = 0; i < bytes.length; ++i) {
            byte bh = Byte.decode("0x" + new String(new byte[]{source[i * 2]})).byteValue();
            bh = (byte)(bh << 4);
            byte bl = Byte.decode("0x" + new String(new byte[]{source[i * 2 + 1]})).byteValue();
            bytes[i] = (byte)(bh ^ bl);
        }

        return bytes;
    }
}

Comments