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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一、题目

题目来自牛客网进制转换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);

    }
}

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6