十六进制到二进制错误Java

时间:2015-04-09 19:50:59

标签: java binary hex

我正在尝试将十六进制转换为二进制,但问题是结果忽略了我应该在左侧获得的对我来说至关重要的零。

我的代码:

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离开了最初的零。

我应该如何获得确切的数字。 提前谢谢。

1 个答案:

答案 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);
}

它并不完美,但应该做到这一点。