[Java] 进制转换

进制转换

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

  • 使用Map提高查找效率

    import java.util.*;
    public class Main {
    
      private final static int BASE = 16;
      private static Map<Character, Integer> map = new HashMap<Character, Integer>()
      {{
          put('0', 0);
          put('1', 1);
          put('2', 2);
          put('3', 3);
          put('4', 4);
          put('5', 5);
          put('6', 6);
          put('7', 7);
          put('8', 8);
          put('9', 9);
          put('A', 10);
          put('B', 11);
          put('C', 12);
          put('D', 13);
          put('E', 14);
          put('F', 15);
          put('a', 10);
          put('b', 11);
          put('c', 12);
          put('d', 13);
          put('e', 14);
          put('f', 15);
      }};
    
      public static int getDecimal(String number) {
          int res = 0;
          for (char ch : number.toCharArray()) {
              res = res * BASE + map.get(ch);
          }
          return res;
      }
    
      public static void main(String[] args) {
          Scanner in = new Scanner(System.in);
          while (in.hasNext()) {
              String number = in.next();
              int res = getDecimal(number.substring(2));
              System.out.println(res);
          }
      }
    }
全部评论
oxaa就不行
1 回复 分享
发布于 2021-08-23 18:21
for (char ch : number.toCharArray()) { res = res * BASE + map.get(ch); } 这个计算方式是怎么想出来的!
8 回复 分享
发布于 2021-10-27 23:18
如果用函数你可以直接用Integer.parseInt(hex, 16)就得到10进制了,记得提前把0x处理掉
7 回复 分享
发布于 2022-03-02 18:48
直接一个tolowercase不用区分大小写
6 回复 分享
发布于 2021-09-14 18:30
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; public class Main { public static void main(String[] args) throws IOException { Scanner scanner = new Scanner(System.in); String str = scanner.nextLine(); if(str.startsWith("0x")){ str = str.substring(2); System.out.println(Integer.valueOf(str,16).toString()); } } } 不香吗?
4 回复 分享
发布于 2022-07-23 15:08
多余,例:'A'-'A'+10=10,'B'-'A'+10=11,可以省略map
3 回复 分享
发布于 2023-09-06 23:02 安徽
hashmap不同的key不能对应相同的value吧?value的10~15应该只能用一次,在string部分就转换统一的大小写
点赞 回复 分享
发布于 2024-04-08 11:48 陕西
0xaa
点赞 回复 分享
发布于 2022-03-22 23:25
你这不对吧,你直接把前两位截了!!!
点赞 回复 分享
发布于 2022-02-20 19:57
15 0*16+15 255 15*16+15 4095 255*16+15 65530 4095*16+10 ((15*16+15)*16+15)*16+10 (15*16*16+15*16+15)*16+10 15*16*16*16+15*16*16+15*16+10
点赞 回复 分享
发布于 2022-01-07 01:26
哥们你这个不是很效率啊
点赞 回复 分享
发布于 2021-08-25 13:40
不是很了解Java 但是C++应该可以用ASCII码的方式简化你这个Map
点赞 回复 分享
发布于 2021-04-07 15:48

相关推荐

不愿透露姓名的神秘牛友
06-23 18:34
点赞 评论 收藏
分享
评论
204
35
分享

创作者周榜

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