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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM