int类型、String类型和byte[]十六进制数组之间的转换

String类型转十六进制byte数组

public static byte[] String2Byte(String s) {
        s = s.replace(" ", "");
        s = s.replace("#", "");
        byte[] baKeyword = new byte[s.length() / 2];
        for (int i = 0; i < baKeyword.length; i++) {
            try {
                baKeyword[i] = (byte) (0xff & Integer.parseInt(s.substring(i * 2, i * 2 + 2), 16));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return baKeyword;
    }

 

int 类型转十六进制byte数组

  String hexString = Integer.toHexString(405);

如上代码得到的结果:

195
Process finished with exit code 0

 总上所述,int类型转十六进制得到的是String类型十六进制,将String类型转为真正的十六进制byte[]数组,.getBytes()方法是不可行的。

利用一开始的String转byte会导致数据不一致,所以处理了一下:

1  public static String intToHex(int val){
2 
3         String s = Integer.toHexString(val);
4         if (s.length() % 2 != 0) {
5             s = "0" + s;
6         }
7         return Utilty.byte2String(Utilty.string2Byte(s));
8     }

 

byte数组转换16进制字符串:

 1 public static String byte2String(byte[] data) {
 2         char[] hexArray = "0123456789ABCDEF".toCharArray();
 3         char[] hexChars = new char[data.length * 2];
 4 
 5         for (int j = 0; j < data.length; j++) {
 6             int v = data[j] & 0xFF;
 7             hexChars[j * 2] = hexArray[v >>> 4];
 8             hexChars[j * 2 + 1] = hexArray[v & 0x0F];
 9         }
10 
11         String result = new String(hexChars);
12         result = result.replace(" ", "");
13         return result;
14     }

 

byte数组转换ASCII码字符串:

byte[] byte = new byte[10];
String str = new String(bytes);

 

byte数组转int类型,先将byte数组转换成十六进制字符串。

byte[] bytes = new byte[10];
String byteStr = byte2Sting(bytes);
int num = Integer.parseInt(byteStr,16);

 

posted @ 2018-12-21 11:18  三心关  阅读(6884)  评论(0编辑  收藏  举报