题解 | #进制转换#

进制转换

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

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            String oxStr = in.nextLine();
            int tenRadix = Integer.parseInt(oxStr.substring(2),16);           
            System.out.println(tenRadix);
        }
    }
}

题解

java中十六进制转十进制,可以使用Integer类的parseInt()方法直接转换,也可以自己写一个转换函数。

一、 Integer.parseInt()十六进制转十进制,简单的方法就是使用Integer.parseInt()方法进制转换,一步到位。1.如果输入的是不带0x表示的十六进制数,直接转换即可。

	Scanner sc = new Scanner(System.in);
    while(sc.hasNextLine())
    {
        String str = sc.nextLine();
        int x=Integer.parseInt(str,16);
        System.out.println(x);

    }

12345678测试结果:

输入:1A输出:26122.如果输入的是带有0x标识的十六进制数,需要截去前面两位标识。

	Scanner sc = new Scanner(System.in);
    while(sc.hasNextLine())
    {
        String str = sc.nextLine();
        int x=Integer.parseInt(str.substring(2),16);
        System.out.println(x);

    }

12345678测试结果:

输入:0x1A输出:2612二、hexToDecimal稍复杂的方法是自己写一个转换函数。使用一个HashMap把“0-9,A-F”与“0-15”的key-value一一存储起来,然后把读取的十六进制数按位存储,然后再使用数据计算16转10的方式计算。

public static int convertNum(String str){String[] c={"A","B","C","D","E","F"};HashMap<String,Integer> hashmap= new HashMap<>();for(int i=0; i<=9;i++){hashmap.put(i+"",i);}for(int j=10;j<=15;j++){hashmap.put(c[j-10],j);}

    String[] st=new String[str.length()];
    for(int i=0;i<=str.length()-1;i++)
    {
        st[i]=str.substring(i,i+1);
    }
    
    int num=0;
    for(int i=2;i<=st.length-1;i++)
    //这里需要注意,如果输入是类似"1A"没有标识的16进制数,i的值从0开始
    //如果是"0x1A"这样有标识符的16进制,则在计算时,需要截掉0x这两位标识,i从2开始
    {
        num += hashmap.get(st[i]) * Math.pow(16,st.length-1-i);
    }
    return num;
}

12345678910111213141516171819202122232425262728在计算时,如果输入的16进制数包含小写,使用toUpperCase()转换成统一的大写字母计算即可.

最后,十进制转二进制,八进制,十六进制,可以直接使用Integer类提供的方法直接转换,分别是toBinaryString(),toOctalString(),toHexString()方法。————————————————版权声明:本文为CSDN博主「奥特曼下象棋」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq_31973461/article/details/117788828

#进制转换#
全部评论

相关推荐

白火同学:大二有这水平很牛了,可以适当对关键信息加粗一点,比如关键技术、性能指标之类的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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