Java的進制轉換操作(十進制、十六進制、二進制)


2014-05-06 17:34 吳文付

最近由於工作上的需要,遇到進制轉換的問題。涉及到的進制主要是 十進制,十六進制,二進制中間的轉換。

這里整理一下。具體的計划為:封裝一個轉換類,一個測試類。

1、十進制 轉 十六進制 二進制:

 

//調用java自帶的api
        //測試十進制轉16進制 2進制
        System.out.println("十進制10轉16進制為"+Integer.toHexString(10));
        System.out.println("十進制10轉二進制為"+Integer.toBinaryString(10));
十進制轉換二進制十六進制

2、十進制字符串轉 16進制 轉 2進制 

將字符串轉為 十進制后參考方法1

System.out.println("字符串10轉16進制為"+Integer.toHexString(Integer.parseInt("10")));
        System.out.println("字符串10轉二進制為"+Integer.toBinaryString(Integer.parseInt("10")));
十進制字符串轉16轉2

 

3、16轉2轉10

 

 

 

 String h = "10000";
         BigInteger srch = new BigInteger(h, 16);
         
         System.out.println("十六進制字符串10000轉為10進制后為:"+srch.toString());//轉換為10進制並輸出結果 
         System.out.println("十六進制字符串10000轉為2進制后為"+Integer.toBinaryString(Integer.parseInt(srch.toString())));
        
十六轉2轉10

2014-05-07 15:18 修正:

上面的轉換使用了BigInteger對象,也可以不使用。

如下方式也可以

16-》2 

可以如下:Integer.toBinaryString(Integer.parseInt("0xAA",16))

 

16-10:

Integer.parseInt("0xAA",16)

 

 

4、2轉10轉16

    String b = "10000";
         BigInteger srcb= new BigInteger(b,2);//轉換為BigInteger類型 
         System.out.println("二進制字符串10000轉為10進制后為:"+srcb);//轉換為10進制並輸出結果 
         System.out.println("二進制字符串10000轉為16進制后為"+Integer.toHexString(Integer.parseInt(srcb.toString())));
        
2轉10轉16

5、字節數組轉 16進制字符串

 public static String BinaryToHexString(byte[] bytes){
         
           String hexStr =  "0123456789ABCDEF";
         String result = "";  
            String hex = "";  
            for(int i=0;i<bytes.length;i++){  
                //字節高4位  
                hex = String.valueOf(hexStr.charAt((bytes[i]&0xF0)>>4));  
                //字節低4位  
                hex += String.valueOf(hexStr.charAt(bytes[i]&0x0F));  
                result +=hex+" ";  //這里可以去掉空格,或者添加0x標識符。
            }  
            return result;  
     }
byte[] 轉16字符串

6、16進制字符串轉 字節數組

 public static byte[] HexStrToBytes(String str)
     {
         //如果字符串長度不為偶數,則追加0
         if(str.length() % 2 !=0){
             str = "0"+str;
         }
         
         byte[] b = new byte[str.length() / 2];
         byte c1, c2;
         for (int y = 0, x = 0; x < str.length(); ++y, ++x)
         {
             c1 = (byte)str.charAt(x);
             if (c1 > 0x60) c1 -= 0x57;
             else if (c1 > 0x40) c1 -= 0x37;
             else c1 -= 0x30;
             c2 = (byte)str.charAt(++x);
             if (c2 > 0x60) c2 -= 0x57;
             else if (c2 > 0x40) c2 -= 0x37;
             else c2 -= 0x30;
             b[y] = (byte)((c1 << 4) + c2);
         }
         return b;
     }
     
16字符串轉字節數組

 

 

 

 

2014-05-06 18:49 完成測試。

 

直接上代碼吧。注釋已經很清楚了

 

工程地址:http://download.csdn.net/detail/douniwan123654/7305195

 

測試后截圖:

 

 

 

 


免責聲明!

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



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