当前位置:   article > 正文

编程练习Day06【十六进制转十进制】_从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输

从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输

从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。

注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。【蓝桥杯

解法:

十六进制转十进制,给十六进制每一位乘16的位数减一次,即可得到相对应的十进制数,特别注意:不能使用int类型,要使用long类型来防止数值溢出。

代码如下:

  1. import java.util.Scanner;
  2. public class Main03 {
  3. public static void main(String[] args){
  4. Scanner input=new Scanner(System.in);
  5. String hex=input.next();
  6. Long pow=1L;//使用long类型防止溢出
  7. long dec=0L;
  8. for(int i=hex.length()-1;i>=0;i--) {//从尾部开始遍历,即从最低位开始遍历
  9. char c=hex.charAt(i);
  10. if(Character.isLetter(c)) {//如果当前字符是字母,和“A”相减拿到超出10的部分再加上10
  11. dec+=(c-'A'+10)*pow;
  12. }else {
  13. dec+=(c-'0')*pow;
  14. }
  15. pow*=16;//每次遍历一位数,乘16的次方也要加一
  16. }
  17. System.out.println(dec);
  18. }
  19. }

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

闽ICP备14008679号