十六进制转十进制数

ゝ一纸荒年。 2021-09-22 10:40 664阅读 0赞
  1. /**
  2. * 十六转十进制(位权法)
  3. * <p>
  4. * 如:十六进制数:6A,-------转换为十进制数是:6 * 161 +(A换成10)100 = 96 + 1= 97
  5. * <p>
  6. * 十六进制数:FFF,--------转换为十进制数:15 * 162 + 15 * 161 + 15 * 160 = 4095
  7. *
  8. * @author star
  9. */
  10. public class Conversion1 {
  11. @SuppressWarnings("resource")
  12. public static void main(String[] args) {
  13. Scanner scanner = new Scanner(System.in);
  14. // 使用双例集合,用作存储转换表
  15. Map<String, Integer> map = new HashMap<>();
  16. // 将十六进制的16个字符(0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)存入集合中
  17. for (int i = 0; i <= 9; i++) {
  18. map.put(String.valueOf(i), i);
  19. }
  20. // 十六进制A代表10,依次类推
  21. map.put("A", 10);
  22. map.put("B", 11);
  23. map.put("C", 12);
  24. map.put("D", 13);
  25. map.put("E", 14);
  26. map.put("F", 15);
  27. // 十进制数
  28. long dec = 0;
  29. // 输入(8位的)十进制数
  30. String str = scanner.next();
  31. if (str.length() <= 8) {
  32. for (int i = 0; i < str.length(); i++) {
  33. //取出十进制数的每一位
  34. String s = String.valueOf(str.charAt(i));
  35. //先判断输入的数是否符合十进制数
  36. if (!map.containsKey(s)) {
  37. System.out.println("输入错误");
  38. return;
  39. }
  40. }
  41. for (int i = 0; i < str.length(); i++) {
  42. String s = String.valueOf(str.charAt(i));
  43. if (map.containsKey(s)) {
  44. //转换为十进制数
  45. dec += (map.get(s) * fac(str.length() - i - 1));
  46. }
  47. }
  48. System.out.println(dec);
  49. }
  50. }
  51. /**
  52. * 计算16的n次幂
  53. *
  54. * @param n 次数
  55. */
  56. public static long fac(int n) {
  57. return n == 0 ? 1 : 16 * fac(n - 1);
  58. }
  59. }

发表评论

表情:
评论列表 (有 0 条评论,664人围观)

还没有评论,来说两句吧...

相关阅读

    相关 十六进制十进制

    问题描述   从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。   注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F

    相关 十六进制十进制

    问题描述   从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。   注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示

    相关 十六进制十进制 -Java

    问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。   注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表