我正在尝试将十六进制转换为二进制,但问题是结果忽略了我应该在左侧获得的对我来说至关重要的零。
我的代码:
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan;
int num;
System.out.println("HexaDecimal to Binary");
scan = new Scanner(System.in);
System.out.println("\nEnter the number :");
num = Integer.parseInt(scan.nextLine(), 16);
String binary = Integer.toBinaryString(num);
System.out.println("Binary Value is : " + binary);
}
输出:
当我将输入作为0000000000001a000d00
时,我应该将输出作为
00000000000000000000000000000000000000000000000000011010000000000000110100000000
但相反,我让11010000000000000110100000000
离开了最初的零。
我应该如何获得确切的数字。 提前谢谢。
答案 0 :(得分:0)
您可以尝试@JohnH提供的链接(How to get 0-padded binary representation of an integer in java?)的解决方案,并结合计算十六进制数的二进制表示长度。每个十六进制数字需要4个二进制数字来表示:
public static void main( String[] args ) {
Scanner scan;
int num;
System.out.println("HexaDecimal to Binary");
scan = new Scanner(System.in);
System.out.println("\nEnter the number :");
String input = scan.nextLine().trim();
num = Integer.parseInt(input, 16);
int paddedLength = input.length() * 4;
String binary = String.format("%"+ paddedLength +"s", Integer.toBinaryString(num)).replace(' ', '0');
System.out.println("Binary Value is : " + binary);
}
它并不完美,但应该做到这一点。