Hex编码字节

1、将字节数组转换为字符串

/**
     * 将字节数组转换为字符串
     * 一个字节会形成两个字符,最终长度是原始数据的2倍
     * @param data
     * @return
     */
    public static String toHex(byte[] data){
        String ret = null;

        //TODO 将字节数组转换为字符串
        if (data != null && data.length>0) {
            StringBuilder sb = new StringBuilder();
            for (byte b: data){
                //分别获取高四位,低四位的内容,将两个数值,转为字符
                int h = (b>>4)&0x0f;
                int l = b&0x0f;
                char ch ,cl;
                if( h > 9 ){
                    ch = (char) ('A'+(h-10));
                }else{  //0--9
                    ch = (char) ('0'+h);
                }

                if(l>9){
                    cl = (char) ('A'+(l-10));
                }else{  //0--9
                    cl = (char) ('0'+l);
                }


                    sb.append(ch).append(cl);
                }
                  ret = sb.toString();
            }

        return ret;
    }

2、将字符串转换为字节数组

public static byte[] fromHex(String str) {
        byte[] ret = null;

        //TODO 将Hex编码的字符串,还原为 原始的字节数组
        if (str != null) {
            int len = str.length();
            if (len > 0 && len % 2 == 0) {
                char[] chs = str.toCharArray();
                ret = new byte[len / 2];
                for (int i = 0, j = 0; i < len; i += 2, j++) {
                    char ch = chs[i];
                    char cl = chs[i + 1];

                    int ih = 0, il = 0, v = 0;
                    if (ch >= 'A' && ch <= 'F') {
                        ih = 10 + (ch - 'A');
                    } else if (ch >= 'a' && ch <= 'f') {
                        ih = 10 + (ch - 'a');
                    } else if (ch >= '0' && ch <= '9') {
                        ih = ch - '0';
                    }

                    if (cl >= 'A' && cl <= 'F') {
                        il = 10 + (cl - 'A');
                    } else if (cl >= 'a' && cl <= 'f') {
                        il = 10 + (cl - 'a');
                    } else if (cl >= '0' && cl <= '9') {
                        il = cl - '0';
                    }

                    v = ((ih & 0x0f) << 4) | (il & 0x0f);
                    //赋值
                    ret[j] = (byte) v;
                }
            }
        }
        return ret;
    }
原文地址:https://www.cnblogs.com/bimingcong/p/5663763.html