java实现十六进制转化为十进制范例

       最近小弟写了一个十六进制转化为十进制的java程序,这个算法的大致思路是将输入的十六进制的数转换为2进制,然后将2进制转换为十进制的算法。该算法的时间效率不是很好,各位前辈有什么好的建议希望大家不吝赐教啊~ 小弟在此谢谢大家~ 

       下面是我写的java代码:


       public class DToTen {

    /**
     * @param args先将十六进制转化为2进制
     */
    
    public String DToTwo(char[] a){
        String str="";
        for(int i=0;i<a.length;i++){
            switch (a[i]) {
            case '0':str+="0000";break;
            case '1':str+="0001";break;
            case '2':str+="0010";break;
            case '3':str+="0011";break;
            case '4':str+="0100";break;
            case '5':str+="0101";break;
            case '6':str+="0110";break;
            case '7':str+="0111";break;
            case '8':str+="1000";break;
            case '9':str+="1001";break;
            case 'A':str+="1010";break;
            case 'B':str+="1011";break;
            case 'C':str+="1100";break;
            case 'D':str+="1101";break;
            case 'E':str+="1110";break;
            case 'F':str+="1111";break;
            default:
                break;
            }
        }
        return str;
    }
    
    /*
     * 将2进制转化为十进制
     */
    
    public int twoToTen(String a){
        char[] c=a.toCharArray();
        int sum=0;
        int s;
        int i=0;
        //注意下面的转换
        for(;i<c.length-1;i++){//2进展的最后以为格外考虑
            s=1;
            if(c[i]=='1'){
                for(int j=0;j<c.length-i-1;j++){
                    s=s*2;
                }
                sum+=s;
            }
        }
        if(c[c.length-1]=='1'){
            sum+=1;
        }
        return sum;
    }
    
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String d="12AB";
        char[] a=d.toCharArray();
        DToTen ttt=new DToTen();
        String c=ttt.DToTwo(a);
        System.out.println(ttt.twoToTen(c));

    }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值