十六进制转十进制数
2018-03-05 19:49
246 查看
/**
* 十六转十进制(位权法)
* 如:十六进制数: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);
}
}
* 十六转十进制(位权法)
* 如:十六进制数: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);
}
}
相关文章推荐
- 十六进制转十进制
- 十六进制转十进制
- 基础练习 十六进制转十进制
- 二、八、十六进制转十进制
- 蓝桥杯-基础练习-十六进制转十进制
- 蓝桥杯:基础练习 十六进制转十进制
- 有符号十六进制转十进制 c++
- 蓝桥基础练习 十六进制转十进制
- 蓝桥杯- 基础练习 十六进制转十进制
- Basic_11_十六进制转十进制
- 基础练习 十六进制转十进制
- 蓝桥杯练习题之十六进制转十进制
- 蓝桥杯——基础练习 十六进制转十进制
- 1565:基础练习 十六进制转十进制
- 蓝桥杯十六进制转十进制
- 在ADS环境下的十六进制转十进制
- connect by 十六进制转十进制
- 蓝桥杯-基础练习之十六进制转十进制——BASIC-11
- 【蓝桥杯】基础练习 十六进制转十进制
- 关于一个《十六进制转十进制》的小程序