题解 | #进制转换#
进制转换
http://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map;
/**
-
进制转换 / public class BtConversion { /*
-
描述
-
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。
-
数据范围:保证结果在 1≤n≤2^(31−1)
-
输入描述:
-
输入一个十六进制的数值字符串。
-
输出描述:
-
输出该数值的十进制字符串。不同组的测试用例用\n隔开。
-
示例1
-
输入:0xAA
-
输出:170 */ public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str; StringBuilder sb = new StringBuilder(); while((str = br.readLine())!=null){ str = str.substring(2); for (int i = 0; i < str.length(); i++) { sb.append(sixTeenToTen(str.substring(i,i+1))); } int sum = 0; for (int i = sb.length() - 1, b = 0; i >= 0; i--, b++) { sum += Integer.parseInt(sb.substring(i, i + 1)) * Math.pow(2, b); }
System.out.println(sum); System.out.println();
}
}
public static String sixTeenToTen(String str){ Map<String,String> convMap = new HashMap<>(); convMap.put("0","0000"); convMap.put("1","0001"); convMap.put("2","0010"); convMap.put("3","0011"); convMap.put("4","0100"); convMap.put("5","0101"); convMap.put("6","0110"); convMap.put("7","0111"); convMap.put("8","1000"); convMap.put("9","1001"); convMap.put("A","1010"); convMap.put("B","1011"); convMap.put("C","1100"); convMap.put("D","1101"); convMap.put("E","1110"); convMap.put("F","1111"); convMap.put("a","1010"); convMap.put("b","1011"); convMap.put("c","1100"); convMap.put("d","1101"); convMap.put("e","1110"); convMap.put("f","1111"); return convMap.get(str); } }
-