------------只要够努力,人生最坏的结局不过是大器晚成!!!

  

            基础练习 十六进制转十进制  
时间限制:1.0s   内存限制:512.0MB
      
问题描述
  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
  注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
样例输入
FFFF
样例输出
65535

注意:数据范围,中间的2的次方可能超过 int 

 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner cin = new Scanner(System.in);
		String[] two = {
				"0000", "0001", "0010", "0011",
				"0100", "0101", "0110", "0111",
				"1000", "1001", "1010", "1011",
				"1100", "1101", "1110", "1111",
				}; 	
		
		String str = cin.nextLine();
		int len = str.length();
		long ans = 0;
		//转为二进制
//		System.out.println(str + "str");
		StringBuilder twostr = new StringBuilder();
		for(int i = 0; i < len; i++) {
			if(str.charAt(i) < 'A') {
				twostr.append(two[str.charAt(i) - '0']);
			}
			else {
				twostr.append(two[str.charAt(i) - 'A' + 10]);
			}
		}
//		System.out.println(twostr);
		//转为十进制
		len = twostr.length();
		long t = 1;
		ans = 0;
		for(int i = len - 1; i >= 0; i--) {
			ans += (twostr.charAt(i) - '0') * t;
			t = t * 2;
		}
		System.out.println(ans);
	}
}

  

 

posted on 2019-02-01 00:20  ystraw  阅读(358)  评论(0编辑  收藏  举报

不经一番切孤寒,怎得梅花扑鼻香