您的位置:首页 > 编程语言

华为校招上机编程之‘‘十六进制转十进制’’

2017-07-04 15:45 337 查看
时间限制:1秒 空间限制:32768K 热度指数:87114
本题知识点: 字符串
 算法知识视频讲解


题目描述

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


输入描述:

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


输出描述:

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

示例1

输入

0xA



输出

10
import java.util.Scanner;
import java.util.*;

/*public class Main{
public static void main(String args[])
{
Scanner sc = new Scanner(System.in);
String str = null;
while(sc.hasNext())
{

str = sc.nextLine().substring(2);
System.out.println(Integer.parseInt(str,16));
}
}
}*/

public class Main{
public static void main(String args[])
{
Scanner sc = new Scanner(System.in);

while(sc.hasNext())
{StringBuffer sb = new StringBuffer();
int sum = 0;
sb.append(sc.next());
String str = sb.reverse().substring(0,sb.length()-2);

char ch[] = str.toCharArray();

for(int i =0;i<ch.length;i++)
{
if(ch[i]>='A'&&ch[i]<='F')
{
sum+=(Integer.valueOf(ch[i])-55)*Math.pow(16,i);
}
else
{
sum+=(Integer.valueOf(ch[i])-48)*Math.pow(16,i);
}
}
System.out.println(sum);
}

}
}
注释部分是第一种方法,该方法直接调用java的API;
第二种方法是按部就班转换,其中-55,和-48,请参照数字和大写字母的ASCII。
所有程序都在java 1.7下通过
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐