简体   繁体   English

如何在Java中获得二进制数字的前导零

[英]How to get Leading zeros for binary numbers in java

I'm trying to convert octal numbers to binary numbers using this code 我正在尝试使用此代码将八进制数转换为二进制数

BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter octal number: ");
String oct = br.readLine();
int i= Integer.parseInt(oct,8);
String binary=Integer.toBinaryString(i);
System.out.println("Octal Number: "+binary);

but the issue here how to get the leading zeros 但是这里的问题是如何获得前导零

Try this. 尝试这个。

      int[] vals = { 10, 34, 99, 1002, 40
      };
      for (int v : vals) {
         // the 07 means a field width of 7 with 0's padding on left.
         // th o means octal and the %n is newline.
         System.out.printf("%07o%n", v);
      }

      //This does the same thing but returns a formatted string.
      String paddedVal = String.format("%07o", 48);
      System.out.println(paddedVal);

For String already in octal. 对于已经为八进制的String。

      String octalVal = "57";
      paddedVal = String.format("%07o", Integer.valueOf(octalVal, 8));
      System.out.println(paddedVal);
      // should print 0000057

For binary numbers. 对于二进制数。


      octalVal = "57";
      String bin = Integer.toBinaryString(Integer.valueOf(octalVal));
      String paddedBin =
            "00000000000000000000000000000".substring(0, 32 - bin.length())
                  + bin;
      System.out.println(paddedBin);

Its kind of simple task. 这是一种简单的任务。 Lets try to complement to multiply of 8; 让我们尝试补充8的乘积;

public static void main(String[] args) {
    System.out.println(binaryPadLeft(Integer.toBinaryString(127)));
}

private static String binaryPadLeft(String number) {
    StringBuilder b = new StringBuilder();
    int mod = number.length() % 8;
    if (mod > 0)
        for (int i = 0, p = 8 - mod; i < p; i++) {
            b.append('0');
        }
    b.append(number);
    return b.toString();
}

gives 01111111 01111111

for 120 it yelds 01010000 120它产生01010000

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM