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

 

测试后截图:

 

 

 

 

转载于:https://www.cnblogs.com/jsRunner/p/3712074.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值