Java(进制转换)

进制转换

http://www.nowcoder.com/questionTerminal/8f3df50d2b9043208c5eed283d1d4da6

套用进制转换的公式,即第n位(从低位开始)数字乘以进制的n-1次幂,加和

import java.util.Scanner;
import java.lang.Math;

public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        while(in.hasNextLine()){
            String s = in.nextLine();    //读入数字
            
            int count = 0;    //记录转换后的数字
            
            for(int i=0; i < s.length()-2; i++){
                //由于前面两位是'0x',故从第三位开始
                char tc = s.charAt(i+2);    
                int t = 0;    //记录字母转换成的数值
                
                //将字母转换为数值
                if(tc>='0' && tc<='9')
                    t = tc - '0';
                //字母'A'/'a'~'F''f'对应数字10~15
                else if(tc>='A' && tc<='F')
                    t = tc - 'A' + 10;
                else if(tc>='a' && tc<='f')
                    t = tc - 'a' +10;
                //计算加和
                count += t * Math.pow(16, s.length()-i-3);
            }
            System.out.println(count);
        }
    }
}


全部评论
这个应该是目前最好的解答了。
3 回复 分享
发布于 2022-04-15 21:19
这个s.length()-i-3是怎么想出来的,我感觉我想破头也想不出来
1 回复 分享
发布于 2022-10-22 22:22 天津
不用求幂,
点赞 回复 分享
发布于 2023-04-05 13:15 甘肃
Scanner in = new Scanner(System.in); while (in.hasNextLine()) { String s = in.nextLine(); //读入数字 int count = 0; //记录转换后的数字 for (int i = 2; i < s.length(); i++) { //由于前面两位是'0x',故从第三位开始 char tc = s.charAt(i); int t = 0; //记录字母转换成的数值 //将字母转换为数值 if (tc >= '0' && tc <= '9') t = tc - '0'; //字母'A'/'a'~'F''f'对应数字10~15 else if (tc >= 'A' && tc <= 'F') t = tc - 'A' + 10; else if (tc >= 'a' && tc <= 'f') t = tc - 'a' + 10; //计算加和 count += t * Math.pow(16, s.length() - i - 1); } System.out.println(count); 下标可以这个改不
点赞 回复 分享
发布于 2023-02-05 19:33 广东
字母转换成的数值默认为0,但是非十六进制字符当做0处理不合适,此时应直接抛异常
点赞 回复 分享
发布于 2023-01-15 22:14 广东
第一个减0,0应该是整数形式,不应该是字符
点赞 回复 分享
发布于 2022-07-25 11:17
这个是常规解法,直接用parseInt是有限制条件的。这个方式可以通用
点赞 回复 分享
发布于 2022-07-23 16:40
🐂
点赞 回复 分享
发布于 2022-06-14 13:17
秒啊
点赞 回复 分享
发布于 2022-06-10 15:46
棒!
点赞 回复 分享
发布于 2022-03-09 15:20
绝!省去了用map或者字典做映射表
点赞 回复 分享
发布于 2022-01-22 10:08

相关推荐

不愿透露姓名的神秘牛友
昨天 18:30
点赞 评论 收藏
分享
05-23 20:31
已编辑
武汉大学 Java
内向的柠檬精在研究求职打法:注意把武大标粗标大 本地你俩不是乱杀
点赞 评论 收藏
分享
评论
125
76
分享

创作者周榜

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