题解 | #进制转换#

进制转换

https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6

import java.util.Scanner;
import static java.lang.Math.pow;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String target=in.next();
        //考虑到其他进制转换,把前两位拿出来if,这里就是16进制就不用了
        String value=target.substring(2).toUpperCase();
        int res=0;
        int j=0;
        for(int i=value.length()-1;i>=0;i--){
            char c=value.charAt(i);
            int num=c-'0';//通过char型的减法得到int数字
            if(num>9)//由于非数字c会得到大写字母,-0后的值大7,比如A-0=17
                num-=7;
            res+=num*(int)pow(16,j++);//+按位*16的j次方
        }
	  	//循环结束就得到10进制值
        System.out.println(res);
    }
}

全部评论
考虑到大家不习惯这种加静态方法的格式,直接Math.pow(16,j)就行了,我也是这么做的,只是在idea上尝试不写Math然后自动给我弹出来的
点赞 回复 分享
发布于 2023-02-13 17:35 广东

相关推荐

头像
01-29 18:11
海南大学 Java
奔跑的suechil...:单从项目看这个简历不怕被问穿吗 带微服务的项目需要相当多的项目理解和经验诶
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务