Преобразование int в двоичное представление строки в Java? - PullRequest
134 голосов
/ 09 марта 2010

Каков наилучший (в идеале, самый простой) способ преобразования int в двоичное строковое представление в Java?

Например, скажем, что int равно 156. Двоичное строковое представление этого будет "10011100".

Ответы [ 15 ]

1 голос
/ 14 сентября 2018

Использование битового сдвига немного быстрее ...

public static String convertDecimalToBinary(int N) {

    StringBuilder binary = new StringBuilder(32);

    while (N > 0 ) {
        binary.append( N % 2 );
        N >>= 1;
     }

    return binary.reverse().toString();

}
1 голос
/ 02 февраля 2017

Это может быть выражено в псевдокоде как:

while(n > 0):
    remainder = n%2;
    n = n/2;
    Insert remainder to front of a list or push onto a stack

Print list or stack
0 голосов
/ 20 февраля 2018

Вы действительно должны использовать Integer.toBinaryString () (как показано выше), но если по какой-то причине вы хотите свой собственный:

// Like Integer.toBinaryString, but always returns 32 chars
public static String asBitString(int value) {
  final char[] buf = new char[32];
  for (int i = 31; i >= 0; i--) {
    buf[31 - i] = ((1 << i) & value) == 0 ? '0' : '1';
  }
  return new String(buf);
}
0 голосов
/ 18 ноября 2017

Вы также можете использовать цикл while для преобразования int в двоичный файл. Вот так

import java.util.Scanner;

public class IntegerToBinary
{
   public static void main(String[] args)
   {
      int num;
      String str = "";
      Scanner sc = new Scanner(System.in);
      System.out.print("Please enter the a number : ");
      num = sc.nextInt();
      while(num > 0)
      {
         int y = num % 2;
         str = y + str;
         num = num / 2;
      }
      System.out.println("The binary conversion is : " + str);
      sc.close();
   }
}

Источник и ссылка - преобразовать int в двоичный файл в java примере.

0 голосов
/ 24 октября 2016

Это должно быть довольно просто с чем-то вроде этого:

public static String toBinary(int number){
    StringBuilder sb = new StringBuilder();

    if(number == 0)
        return "0";
    while(number>=1){
        sb.append(number%2);
        number = number / 2;
    }

    return sb.reverse().toString();

}
...