zoukankan      html  css  js  c++  java
  • 蓝桥杯 之 基础练习11:十六进制转十进制

    /*问题描述

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

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

    样例输入

    FFFF

    样例输出

    65535*/

    心得:

      一开始忘记了十六进制转十进制的原理,便无从下手。后来去百度了一下:它是按数位依次操作,每个数位将前面的数乘16的数位次方,再将当前各数位的值相加.

    例如:

    本题也有陷阱,也是出在数据范围上,不超过8位的十六进制数,所以计算总和的sum应该声明为long型,而不是int型,否则会出错。

     1 import java.util.*;
     2 public class Main {
     3      public static void main (String args[]){
     4          Scanner sc=new Scanner(System.in);
     5          String s=sc.nextLine();
     6          char c[]=s.toCharArray();    //将字符串对象中的字符转换为一个字符数组
     7          int n=c.length;
     8          long sum=0;                    
     9      //long型的取值范围:-9223372036854775808~9223372036854775807
    10          for(int i=0;i<n;i++){
    11              if((int)c[i]-48>9){
    12                  if(c[i]=='A')
    13                      sum+=10*Math.pow(16,n-i-1);
    14                  else if(c[i]=='B')
    15                      sum+=11*Math.pow(16,n-i-1);
    16                  else if(c[i]=='C')
    17                      sum+=12*Math.pow(16,n-i-1);
    18                  else if(c[i]=='D')
    19                      sum+=13*Math.pow(16,n-i-1);
    20                  else if(c[i]=='E')
    21                      sum+=14*Math.pow(16,n-i-1);
    22                  else if(c[i]=='F')
    23                      sum+=15*Math.pow(16,n-i-1);
    24              }
    25              else{
    26                  sum+=((int)c[i]-48)*Math.pow(16,n-i-1);
    27              }
    28          }
    29          System.out.println(sum);
    30      }
    31  }
  • 相关阅读:
    [moka同学笔记]yii2.0缓存
    [moka同学笔记]yii2.0查询数据库
    [moka同学笔记]yii2.0数据库操作以及分页
    [moka同学笔记]yii2.0表单的使用
    [moka同学笔记]bootstrap基础
    yii2时间日期控件的使用[转]
    java基础练习[一]
    上传照片
    selenium截图功能
    pip更新报错问题
  • 原文地址:https://www.cnblogs.com/beckljm/p/4254566.html
Copyright © 2011-2022 走看看