bbbblog

华为:十六进制转换成十进制

进制转换

写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )

输入描述:

输入一个十六进制的数值字符串。

输出描述:

输出该数值的十进制字符串。

输入例子:
0xA
输出例子:
10

解题
十六进制转换成十进制
如下

定义

16进制即逢16进1,其中用A,B,C,D,E,F(字母不区分大小写)这六个字母来分别表示10,11,12,13,14,15。故而有16进制每一位上可以是从小到大为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F共16个大小不同的数。

转换

编辑
16进制到十进制
16进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……
所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。
例:2AF5换算成10进制:
用竖式计算:
第0位: 5 * 16^0 = 5
第1位: F * 16^1 = 240
第2位: A * 16^2= 2560
第3位: 2 * 16^3 = 8192
-------------------------------------
10997
直接计算就是:
5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997
 
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        while(in.hasNext()){
            String str =in.next();
            int num = 0;
            int len = str.length() -2;
            for(int i =2;i<str.length();i++){
                char ch = str.charAt(i);
                int byt = getNum(ch);
                num += byt*Math.pow(16,len-( i -1));
                 
            }
            System.out.println(num);
        }
    }
    public static int getNum(char ch){
        switch(ch){
            case \'0\': return 0;
            case \'1\': return 1;
            case \'2\': return 2;
            case \'3\': return 3;
            case \'4\': return 4;
            case \'5\': return 5;
            case \'6\': return 6;
            case \'7\': return 7;
            case \'8\': return 8;
            case \'9\': return 9;
            case \'a\':
            case \'A\': return 10;
            case \'b\':
            case \'B\': return 11;
            case \'c\':
            case \'C\': return 12;
            case \'d\':
            case \'D\': return 13;
            case \'e\':
            case \'E\': return 14;
            case \'f\':
            case \'F\': return 15;
            default:return 0;
             
        }
    }
}

 

发表于 2016-03-17 19:55  水滴四川  阅读(2313)  评论(0编辑  收藏  举报
 

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2021-09-12
  • 2022-12-23
  • 2021-11-21
  • 2021-09-29
  • 2021-07-03
  • 2022-12-23
  • 2021-04-13
猜你喜欢
  • 2021-12-01
  • 2021-12-01
  • 2022-12-23
  • 2022-12-23
  • 2021-12-14
相关资源
相似解决方案