Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
System.out.println(input);
int a = Integer.parseInt(input.substring(2), 16);
System.out.println(Integer.toBinaryString(a));
上面提到的代码,它接受十六进制值并将其转换为二进制。但是,这不适用于输入" 0xBE400000
"但它适用于" 0x41C20000
"
答案 0 :(得分:9)
BE400000
大于Integer.MAX_VALUE
(其十六进制表示为7FFFFFFF
)。
因此,您需要使用
解析它long a = Long.parseLong(input.substring(2), 16);
答案 1 :(得分:3)
您可以使用Long
long l = Long.parseLong(input.substring(2), 16);
但如果您的值大于2 ^ 63 - 1,您可以使用BigInteger
的构造函数:
BigInteger(String val,int radix) 将指定基数中BigInteger的String表示形式转换为BigInteger。
BigInteger b = new BigInteger(input.substring(2), 16);
答案 2 :(得分:3)
由于0xBE400000
在unsigned int范围内,您可以使用:parseUnsignedInt(String s, int radix)
int a = Integer.parseUnsignedInt(input.substring(2), 16);
使用parseUnsignedInt(input, 16)
,您可以解析从0x00000000
到0xFFFFFFFF
的值,其中: