[牛客网]16进制转10进制

一、题目

题目来自牛客网,进制转换https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6?tpId=37&tqId=21228&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3Fdifficulty%3D2%26page%3D1%26pageSize%3D50%26search%3D%26tpId%3D37%26type%3D37&difficulty=2&judgeStatus=undefined&tags=&title=

二、十六进制转十进制规则

十六进制:0~9这十个数字+10-15用A-F表示。字母不区分大小写。

十六进制用0x开头(数字0),2AF5可以用0x2AF5表示

0xAA转换成10进制=10*16^0+10*16^1=170

三、代码

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str=sc.nextLine();
        str=str.substring(2); //去掉开头的0x
        char[] c_arr=str.toCharArray();
        double res=0;
        int len=c_arr.length-1;
        for(int i=0;i<=len;i++){
            if(c_arr[i]=='A') res=res+10*Math.pow(16,len-i);
            else if(c_arr[i]=='B' ||c_arr[i]=='b') {res=res+11*Math.pow(16,len-i);}
            else if(c_arr[i]=='C' ||c_arr[i]=='c') {res=res+12*Math.pow(16,len-i);}
            else if(c_arr[i]=='D' ||c_arr[i]=='d') {res=res+13*Math.pow(16,len-i);}
            else if(c_arr[i]=='E' ||c_arr[i]=='e') {res=res+14*Math.pow(16,len-i);}
            else if(c_arr[i]=='F' ||c_arr[i]=='f') {res=res+15*Math.pow(16,len-i);}
            else {res=res+Double.parseDouble(""+c_arr[i])*Math.pow(16,len-i);}
        }
        System.out.println((int)res);

    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值