zoukankan      html  css  js  c++  java
  • 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

    测试后截图:

    QQ:540045865 热爱生活,热爱编程。
  • 相关阅读:
    ssh REMOTE HOST IDENTIFICATION HAS CHANGED!
    pipenv+sublime text3 配置
    华硕N55SF 折腾记
    vscode 的tab与空格设置
    kbenigne学习3 get-started 2创建实体
    设置数据编码
    jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
    jquery与其他js冲突
    php取整
    IE8 indexOf
  • 原文地址:https://www.cnblogs.com/jsRunner/p/3712074.html
Copyright © 2011-2022 走看看