题目一:
二进制转十进制:
package test;
import java.math.BigInteger;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
String num = in.next();
String[] b = num.split("");
long hex = 0;
for (int i = b.length - 1; i >= 0; i--) {
hex = (long) (hex + Integer.parseInt(b[i]) * Math.pow(2,b.length - 1 - i));
}
System.out.println(hex);
}
}
}
题目二:
写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。(多组同时输入 )
输入描述:
输入一个十六进制的数值字符串。
输出描述:
输出该数值的十进制字符串。
输入例子1:
0xA
输出例子1:
10
题解:
(小知识)想要获得Integer:
String 为十进制. 采用valueof(String)合适. 非十进制,采用decode(String)
想要获得int:
String 为十进制. 采用parseInt(String )合适. 非十进制,采用parseInt(String ,int)
直接调用Java的decode方法.
该方法的作用是将 String 解码为 Integer。接受十进制、十六进制和八进制数字。
根据要解码的 String(mn)的形式转成不同进制的数字。 mn由三部分组成:符号、基数说明符和字符序列。 -0X123中-是符号位,0X是基数说明符(0表示八进制,0x,0X,#表示十六进制,什么都不写则表示十进制),123是数字字符序列。
package test;
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()) {
String str = scanner.next();
System.out.println(Integer.decode(str));
}
}
}