字节数组与16进制字符串之间的转换

来源:互联网 发布:a股流通市值最小数据 编辑:程序博客网 时间:2024/04/30 22:22
/** * Created by Administrator on 16-1-19. */public class ByteHex {    /* Convert byte[] to hex string.这里我们可以将byte转换成int,然后利用Integer.toHexString(int)来转换成16进制字符串。    * @param src byte[] data    * @return hex string    */    public static String bytesToHexString(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();    }    public static String bytesToHexString(byte[] src,int start,int length){        StringBuilder stringBuilder = new StringBuilder("");        if (src == null || src.length <= 0) {            return null;        }        for (int i = start; i < 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();    }    /**     * Convert hex string to byte[]     * @param hexString the hex string     * @return byte[]     */    public static byte[] hexStringToBytes(String hexString) {        if (hexString == null || hexString.equals("")) {            return null;        }        hexString = hexString.toUpperCase();        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;    }    /**     * Convert char to byte     * @param c char     * @return byte     */    private static byte charToByte(char c) {        return (byte) "0123456789ABCDEF".indexOf(c);    }   public static void main(String args[])throws Exception{        byte[] bytes = hexStringToBytes("87");        System.out.print(bytesToHexString(bytes));    }}
0 0