题解 | #进制转换#
进制转换
http://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6
import java.util.*;
public class Main{
/*public static void main(String [] args){
//Java包装类Integer自带的方法
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String s=sc.next();
String str=s.substring(2);
System.out.println(Integer.parseInt(str,16));
}
}*/
/*===========================================*/
//Map集合
/*private final static int BASE=16;
private static Map<Character,Integer> map=new HashMap<Character,Integer>()
{{
put('0',0);
put('1',1);
put('2',2);
put('3',3);
put('4',4);
put('5',5);
put('6',6);
put('7',7);
put('8',8);
put('9',9);
put('A',10);
put('B',11);
put('C',12);
put('D',13);
put('E',14);
put('F',15);
}};
public static void main(String [] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String s=sc.nextLine();
String str=s.substring(2);
char[] ch=str.toCharArray();
int target=0;
for(int i=0;i<ch.length;i++){
target=target*BASE+map.get(ch[i]);
}
System.out.println(target);
}
}*/
/*=================================================*/
/*private final static int BASE=16;
public static Map<Character,Integer> map=new HashMap<Character,Integer>();
static{
map.put('0',0);
map.put('1',1);
map.put('2',2);
map.put('3',3);
map.put('4',4);
map.put('5',5);
map.put('6',6);
map.put('7',7);
map.put('8',8);
map.put('9',9);
map.put('A',10);
map.put('B',11);
map.put('C',12);
map.put('D',13);
map.put('E',14);
map.put('F',15);
}
public static void main(String [] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String s=sc.nextLine();
int res=getDecimalValue(s);
System.out.println(res);
}
}
public static int getDecimalValue(String s){
if(s==null){
return 0;
}
if(s.startsWith("0x")){
s=s.substring(2);
}
char[] ch=s.toUpperCase().toCharArray();
int target=0;
for(int i=0;i<ch.length;i++){
target=target*BASE+map.get(ch[i]);
}
return target;
}
public static int getDecimalValue2(String s){
if(s==null){
return 0;
}
if(s.startsWith("0x")){
s=s.substring(2);
}
return Integer.parseInt(s,16);
}*/
/*========================================================*/
/*public static void main(String [] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String s=sc.nextLine();
if(s.startsWith("0x")){
s=s.substring(2);
}
int target=0;
for(int i=0;i<s.length();i++){
char ch=s.charAt(i);
int num=0;
if(ch>='0' && ch<='9'){
num=ch-'0';
}else if(ch>='A'&&ch<='F'){
num=ch-'A'+10;
}else if(ch>='a'&&ch<='f'){
num=ch-'a'+10;
}
target+=num*Math.pow(16,s.length()-i-1);
}
System.out.println(target);
}
}*/
/*=======================================================*/
/*public static void main(String [] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String s=sc.nextLine();
int res=new Main().hexToTen(s);
System.out.println(res);
}
}
public static int hexToTen(String s){
if(s.startsWith("0x")){
s=s.substring(2);
}
String str="0123456789ABCDEF";
char [] ch=s.toCharArray();
int target=0;
for(int i=0;i<ch.length;i++){
int index=str.indexOf(ch[i]);
target+=index*Math.pow(16,s.length()-i-1);
}
return target;
}*/
/*==============================================*/
/*public static void main(String [] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String s=sc.nextLine().toUpperCase();
int target=0;
int r=1;
while(!"0X".equals(s)){
String str=s.substring(s.length()-1);
switch(str){
case "A":
target+=10*r;
break;
case "B":
target+=11*r;
break;
case "C":
target+=12*r;
break;
case "D":
target+=13*r;
break;
case "E":
target+=14*r;
break;
case "F":
target+=15*r;
break;
default:
target+=Integer.parseInt(str)*r;
break;
}
s=s.substring(0,s.length()-1);
r=r*16;//幂指数,从末尾往前循环,循环一次乘以16,循环2次乘以16的平方
}
System.out.println(target);
}
}*/
/*======================================================*/
public static void main(String [] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String s=sc.nextLine();
if(s.startsWith("0x")){
s=s.substring(2);
}
char[] ch=s.toCharArray();
int target=0;
int len=ch.length;
for(int i=0;i<len;i++){
if(ch[i]-48>9){
if(ch[i]=='A'){
target+=10*Math.pow(16,len-i-1);
}else if(ch[i]=='B'){
target+=11*Math.pow(16,len-i-1);
}else if(ch[i]=='C'){
target+=12*Math.pow(16,len-i-1);
}else if(ch[i]=='D'){
target+=13*Math.pow(16,len-i-1);
}else if(ch[i]=='E'){
target+=14*Math.pow(16,len-i-1);
}else if(ch[i]=='F'){
target+=15*Math.pow(16,len-i-1);
}
}else{
target+=(ch[i]-48)*Math.pow(16,len-i-1);
}
}
System.out.println(target);
}
}
}