题解 | #进制转换#
进制转换
https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6
1、m的n次方 :Math.pow(m,n);
2、char 转 int : Integer.ParseInt(String.valueOf(char));
3、string 反转:
(1)转成 stringBuffer : StringBuffer sb = new StringBuffer(str);
(2) 反转 :String reverseStr = sb.reverse().toString();
4、十六进制以0x 开头,不计算
5、十六进制计算:16 x (m的 0、1、2 ... 次方)
--------------------------------------------------------------------------------------------------------------------------
直接使用API
十六进制 转 十进制
int number = Integer.parseInt(16进制str, 16); //这里的str去掉十六进制的 0X 开头。
import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String hex = sc.nextLine().substring(2).toUpperCase(); Map<Integer,Integer> map = new HashMap<Integer, Integer>(); int len = hex.length(); int num = 0; int FIXED_NUMBER = 16; int sum = 0; StringBuffer sb = new StringBuffer(hex); String hexReverse = sb.reverse().toString(); for (int i = 0; i < len; i++) { char c = hexReverse.charAt(i); //转换 switch (c){ case 'A': num = 10; break; case 'B': num = 11; break; case 'C': num = 12; break; case 'D': num = 13; break; case 'E': num = 14; break; case 'F': num = 15; break; default: num = Integer.parseInt(String.valueOf(c)); } map.put(i, num); } for (Map.Entry<Integer, Integer> entry : map.entrySet()) { int pos = entry.getKey(); int val = entry.getValue(); sum += Math.pow(FIXED_NUMBER, pos) * val; } System.out.println(sum); } }