Каков наилучший (в идеале, самый простой) способ преобразования int в двоичное строковое представление в Java?
Например, скажем, что int равно 156. Двоичное строковое представление этого будет "10011100".
Использование битового сдвига немного быстрее ...
public static String convertDecimalToBinary(int N) { StringBuilder binary = new StringBuilder(32); while (N > 0 ) { binary.append( N % 2 ); N >>= 1; } return binary.reverse().toString(); }
Это может быть выражено в псевдокоде как:
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
Вы действительно должны использовать 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); }
Вы также можете использовать цикл 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 примере.
Это должно быть довольно просто с чем-то вроде этого:
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(); }