赞
踩
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
-
- /*
- * 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。
- * 注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。
- */
- public class Main {
- public static void main(String[] args) throws IOException {
- BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
- String s1="";
- String s2="";
- long sum=0; //定义long型变量
- String s = reader.readLine();
- //char []ArrOld = s.toCharArray();不需要转换
- s1=s.toUpperCase();//将s中的小写字母转换为大写字母
-
- /* int i=0;
- while(ArrOld[i]!='\0') //java 的字符数组没有结束符!!!!!!!
- {
- char []ArrNew = new char[ArrOld.length];
- ArrNew[i]=(char)(ArrOld[i]-26);
- System.out.println(ArrNew);
- s=new String(ArrNew);
- i++;
- }*/
- s2=hexToBinary(s1);
-
- for(int i=0;i<s2.length();i++)
- {
- /* System.out.println(s2.charAt(s2.length()-i-1));
- System.out.println(PowerTwo(i)); */
- /* long k=Integer.valueOf(s2.charAt(s2.length()-i-1));
- System.out.println("p:::"+p);
- System.out.println("k:::"+k); */
- sum+=((s2.charAt(s2.length()-i-1))-48)*PowerTwo(i);//字符串的0只能转换成int型的48
- }
- System.out.println(sum);
- }
- public static long PowerTwo(int i){ //返回long型数据,否则int型可能会越界
- long n=1;
- if(i==0)
- {
- return 1;
- }else
- {
- for(int j=0;j<i;j++)
- n=n*2;
- return n;
- }
- }
//十六进制转换为二进制算法
- public static String hexToBinary(String hexNum){
- char[] chs = {'0','1'};
- String str = new String("0123456789ABCDEF");
- char[] charArray = hexNum.toCharArray();
- int pos = charArray.length*4;
- char[] binaryArray = new char[pos];
- for (int i = charArray.length - 1; i >=0; i--) {
- int temp = str.indexOf(charArray[i]);
- for(int j=0;j<4;j++){
- binaryArray[--pos] = chs[temp & 1];
- temp = temp >>> 1;
- }
- }
- return new String(binaryArray);
- }
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。