十六进制转十进制数

/**

 * 十六转十进制(位权法)

 * 如:十六进制数:6A,——-转换为十进制数是:6*161+(A换成10)100=96+1=97

         十六进制数:FFF,——–转换为十进制数:15*162+15*161+15*160=4095

 * @author kevin

 *

 */

public class Conversion1 {

@SuppressWarnings(“resource”)

public static void main(String[] args) {

   
Scanner scanner=new Scanner(System.in);

   
//使用双例集合,用作存储转换表

   
Map<String,Integer> map=new HashMap<String, Integer>();

   
//将十六进制的16个字符(0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)存入集合中

   
for(int i=0;i<=9;i++){

   
map.put(String.valueOf(i),i);

   
}

   
//十六进制A代表10,依次类推

   
map.put(“A”,10);

   
map.put(“B”,11);

   
map.put(“C”,12);

   
map.put(“D”,13);

   
map.put(“E”,14);

   
map.put(“F”,15);

   
//十进制数

   
long dec=0;

   
//输入(8位的)十进制数

   
String str=scanner.next();

   

   
if(str.length()<=8){

   
for(int i=0;i<str.length();i++){

   
//取出十进制数的每一位

   
String s=String.valueOf(str.charAt(i));

   
//先判断输入的数是否符合十进制数

   
if(!map.containsKey(s)){

   
System.out.println(“输入错误”);

   
return;

   
}

   
}

   

   
for(int i=0;i<str.length();i++){

   
String s=String.valueOf(str.charAt(i));

   
if(map.containsKey(s)){

   
//转换为十进制数

   
dec+=(map.get(s)*fac(str.length()-i-1));

   
}

   
}

   
System.out.println(dec);

   

   
}

}

/**

* 计算16的n次幂

* @param n 次数

*/

public static long fac(int n){

return n==0?1:16*fac(n-1);

}

}

    原文作者:进制转换
    原文地址: https://blog.csdn.net/oschina_41790905/article/details/79450116
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞