编程题:进制转换


链接: 进制转换
来源:牛客网

问题描述:

在这里插入图片描述

解题思路:

  1. 首先我们应该弄清楚题上输入的0xA是什么意思:0x就代表后边的数字是个16进制的数字。
  2. 其次我们应该知道一些有关16进制的知识:十六进制(简写为hex或下标16)在数学中是一种逢16进1的进位制。一般用数字0到9和字母A到F(或a-f)表示,其中:A-F表示10~15,这些称作十六进制数字。
  3. 清楚这些后我们还需要弄懂16进制与10进制怎么进行转换,比如:
    在这里插入图片描述
  4. 相信弄清楚上边这些做这个题就会很轻松了。

步骤一:我们首先用一个HashMap来建立十六进制中的每个字节与他们对应的10进制数字的关系。
步骤二:然后我们将输入的字符串除去前两位后面的每个字节都提取出来用map知道他们对应的十进制数字,最后带入计算输出即可。

解题代码:

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main1 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            //步骤一
            Map<Character,Integer> map=new HashMap<>();
            String s=sc.nextLine();
            map.put('0',0);
            map.put('1',1);
            map.put('2',2);
            map.put('3',3);
            map.put('4',4);
            map.put('5',5);
            map.put('6',6);
            map.put('7',7);
            map.put('8',8);
            map.put('9',9);
            map.put('A',10);
            map.put('B',11);
            map.put('C',12);
            map.put('D',13);
            map.put('E',14);
            map.put('F',15);
            int number=0;
            int power=s.length()-3;
            //步骤二
            for(int i=2;i<s.length();i++){
                char c=s.charAt(i);
                if(map.containsKey(c)){
                    int num=map.get(c);
                    number+= (int) (num*Math.pow(16,power));
                    power--;
                }
            }
            System.out.println(number);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值