java进制转换、字符串转ascii

1,975 阅读1分钟

因最近项目业务需求需要,需要组装报文向其他终端发送报文,对平时项目开发来说,都是字符串、十进制的数操作的,向终端发送的报文有特殊要求,要十六进制、或UTF-16字符串等,记录下工作中转换

在线进制转换工具 可以对比查看代码转换与在线工具转换

1、二进制转十六进制

public static String twoToSixteen(String s) {
   int data = Integer.valueOf(s, 2);
   String hex = Integer.toHexString(data);
   return hex;
}

2、十进制转二进制

public static String tenToTwo(String num) {
    String s = Integer.toBinaryString(Integer.parseInt(num));
    return s;
}

3、十六进制转十进制

public static String sixteenToTen(String num) {
    BigInteger lngNum=new BigInteger(num,16);
    return String.valueOf(lngNum.intValue());
}

4、十进制转十六进制

public static String tenToSixteen(String str) {
        int data = Integer.parseInt(str);
        String preData = Integer.toHexString(data);
        return preData;
}

5、将汉字转换为16进制数

在线工具查看转换字符串(www.mytju.com/classcode/t…)



public static String gbkToUnicode(String str) {
    String st = "";
    try {
            //**这里要非常的注意,在将字符串转换成字节数组的时候一定要明确是什么格式的,这里使用的是utf-8格式的,还有gb2312,ISO-8859-1等格式**
            byte[] by = str.getBytes("UTF-8");
            for (int i = 0; i < by.length; i++) {
                String strs = Integer.toHexString(by[i]);
                if (strs.length() > 2) {
                    strs = strs.substring(strs.length() - 2);
                }
                st += strs;
            }

    } catch (Exception e) {
        e.printStackTrace();
    }
    return st;
}

6、字符串转ascii

在线查看Hex编码和Hex解码结果 stool.chinaz.com/hex

public static String strToASCII(String str) {
    StringBuilder sb = new StringBuilder();
    char[] ch = str.toCharArray();
    for (int i = 0; i < ch.length; i++) {
        int i1 = Integer.valueOf(ch[i]).intValue();
        String s = Integer.toHexString(i1);
        sb.append(s);
    }
    return sb.toString();
}

7、补前缀,位数不够,前面补0

终端报文对长度有要求,位数不够需要前面补0

//num为需要补0的内容,length是总位数
 public static String prefixStr(String num, int length) {
        for (int len = num.length(); len < length; len = num.length()) {
            num = "0" + num;
        }
        return num;
    }