zoukankan      html  css  js  c++  java
  • 华为:十六进制转换成十进制

    进制转换

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

    输入描述:

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

    输出描述:

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

    输入例子:
    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;
                 
            }
        }
    }
  • 相关阅读:
    SQL group by的困惑
    【翻译】优化基于ExtJS 4.1的应用
    DAO模式图解
    Add new rows to WebCombo in clientside javascript
    JavaScript页面刷新与弹出窗口问题解决方法
    Web开发:"父窗口"与"弹出子窗口"之间的刷新, 传值(转载)
    用"window.showModalDialog()"实现DIV模式弹出窗口
    [转]Infragistics NetAdvantage UltraWebGrid使用技巧
    JavaScript 和 .NET 中的 JavaScript Object Notation (JSON) 简介
    json2.js 使用详细教程
  • 原文地址:https://www.cnblogs.com/bbbblog/p/5289021.html
Copyright © 2011-2022 走看看