当前位置:   article > 正文

蓝桥杯--十六进制转十进制--Java代码_蓝桥杯十六进制转十进制 java

蓝桥杯十六进制转十进制 java

问题描述

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

样例输入

       FFFF

样例输出

       65535


首先,先讲一下公式(该公式适合运用于任何进制转十进制):

           系数:所给数字每一位上的数据;基数:所给的数字为X进制,基数就位X

           权:在数字的右边从0开始编号,每一位上对应的编号即为权

           结果  =   系数 *  基数的权次幂相加

           例:0x235 = 2 * 16 ^ 2 + 3 * 16 ^ 1 + 5 * 16 ^ 0 = 565

                  0100 = 1 * 8 ^ 2 + 0 * 8 ^ 1 + 0 * 8 ^ 0 = 64

然后,看代码:

  1. import java.util.Scanner;
  2. public class Main {
  3. public Main() {
  4. Scanner scanner = new Scanner(System.in);
  5. String str = scanner.nextLine();
  6. int length = str.length(); //获取输入字符串的长度
  7. int[] a = new int[length]; //定义一个数组,用于存放每一位的数字即存放系数
  8. for (int i = 0; i < length; i++) { //利用for循环为数组赋值
  9. switch (str.charAt(i)) {
  10. case 'a':
  11. case 'A':
  12. a[i] = 10;
  13. break;
  14. case 'b':
  15. case 'B':
  16. a[i] = 11;
  17. break;
  18. case 'c':
  19. case 'C':
  20. a[i] = 12;
  21. break;
  22. case 'd':
  23. case 'D':
  24. a[i] = 13;
  25. break;
  26. case 'e':
  27. case 'E':
  28. a[i] = 14;
  29. break;
  30. case 'f':
  31. case 'F':
  32. a[i] = 15;
  33. break;
  34. default:
  35. a[i] = Integer.parseInt(str.charAt(i)+""); //将char转换为int
  36. break;
  37. }
  38. }
  39. long result = 0;
  40. int n = 0; //定义一个变量作为权
  41. for (int i = length-1; i >= 0; i--) {
  42. result += a[i]*Math.pow(16,n); //利用公式计算
  43. n++;
  44. }
  45. System.out.println(result);
  46. }
  47. public static void main(String[] args) {
  48. new Main();
  49. }
  50. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/226755
推荐阅读
相关标签
  

闽ICP备14008679号