无法将所有十六进制值转换为二进制

Yer*_*ang 5 java integer

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));
Run Code Online (Sandbox Code Playgroud)

上面提到的代码,它接受十六进制值并将其转换为二进制.但是,这对输入" 0xBE400000" 不起作用,但它适用于" 0x41C20000"

Era*_*ran 9

BE400000大于Integer.MAX_VALUE(其十六进制表示7FFFFFFF).

因此,您需要解析它

long a = Long.parseLong(input.substring(2), 16);
Run Code Online (Sandbox Code Playgroud)