不考虑输入,直接使用对应数字乘上16的对应位数的次方之和即可
如果考虑输入,且为16进制的字符串:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
//输入16进制字符串 0xABCDEF
String hexString = sc.nextLine();
long n = HexToDec(hexString);
System.out.println(n);
}
}
private static long HexToDec(String hexString) {
String s = hexString.substring(2,hexString.length());
int len = s.length();
long ret = 0;
for(int i=0;i<s.length();i++){
char ch = s.charAt(i);
int t = 0;
//处理字符为对应的数字
if(ch>='0'&& ch<='9'){
t = ch-'0';
}
if(ch>='A'&&ch<='F'){
t = ch-'7';
}
ret += t*Math.pow(16,len-1);
len--;
}
return ret;
}
京公网安备 11010502036488号