Каким будет лучший способ (в идеале, самый простой) преобразовать int в двоичное строковое представление в Java?
Например, скажем, int is 156. Бинарное строковое представление этого будет "10011100".
Каким будет лучший способ (в идеале, самый простой) преобразовать int в двоичное строковое представление в Java?
Например, скажем, int is 156. Бинарное строковое представление этого будет "10011100".
Integer.toBinaryString(int i)
		Существует также метод java.lang.Integer.toString(int i, int base), который был бы более уместным, если бы ваш код может в один прекрасный день обрабатывать базы, отличные от 2 (двоичные).
Еще один способ. Используя java.lang.Integer, вы можете получить строковое представление первого аргумента i в radix (Octal - 8, Hex - 16, Binary - 2), заданном вторым аргументом.
 Integer.toString(i, radix)
Пример _
private void getStrtingRadix() {
        // TODO Auto-generated method stub
         /* returns the string representation of the 
          unsigned integer in concern radix*/
         System.out.println("Binary eqivalent of 100 = " + Integer.toString(100, 2));
         System.out.println("Octal eqivalent of 100 = " + Integer.toString(100, 8));
         System.out.println("Decimal eqivalent of 100 = " + Integer.toString(100, 10));
         System.out.println("Hexadecimal eqivalent of 100 = " + Integer.toString(100, 16));
    }
_ Выходной
Binary eqivalent of 100 = 1100100
Octal eqivalent of 100 = 144
Decimal eqivalent of 100 = 100
Hexadecimal eqivalent of 100 = 64
		public static string intToBinary(int n)
{
    string s = "";
    while (n > 0)
    {
        s =  ( (n % 2 ) == 0 ? "0" : "1") +s;
        n = n / 2;
    }
    return s;
}
		public class Main  {
   public static String toBinary(int n, int l ) throws Exception {
       double pow =  Math.pow(2, l);
       StringBuilder binary = new StringBuilder();
        if ( pow < n ) {
            throw new Exception("The length must be big from number ");
        }
       int shift = l- 1;
       for (; shift >= 0 ; shift--) {
           int bit = (n >> shift) & 1;
           if (bit == 1) {
               binary.append("1");
           } else {
               binary.append("0");
           }
       }
       return binary.toString();
   }
    public static void main(String[] args) throws Exception {
        System.out.println(" binary = " + toBinary(7, 4));
        System.out.println(" binary = " + Integer.toString(7,2));
    }
}
		Это то, что я написал несколько минут назад, просто возился. Надеюсь, это поможет!
public class Main {
public static void main(String[] args) {
    ArrayList<Integer> powers = new ArrayList<Integer>();
    ArrayList<Integer> binaryStore = new ArrayList<Integer>();
    powers.add(128);
    powers.add(64);
    powers.add(32);
    powers.add(16);
    powers.add(8);
    powers.add(4);
    powers.add(2);
    powers.add(1);
    Scanner sc = new Scanner(System.in);
    System.out.println("Welcome to Paden9000 binary converter. Please enter an integer you wish to convert: ");
    int input = sc.nextInt();
    int printableInput = input;
    for (int i : powers) {
        if (input < i) {
            binaryStore.add(0);     
        } else {
            input = input - i;
            binaryStore.add(1);             
        }           
    }
    String newString= binaryStore.toString();
    String finalOutput = newString.replace("[", "")
            .replace(" ", "")
            .replace("]", "")
            .replace(",", "");
    System.out.println("Integer value: " + printableInput + "\nBinary value: " + finalOutput);
    sc.close();
}   
}
Преобразование целочисленного в двоичный:
import java.util.Scanner;
public class IntegerToBinary {
    public static void main(String[] args) {
        Scanner input = new Scanner( System.in );
        System.out.println("Enter Integer: ");
        String integerString =input.nextLine();
        System.out.println("Binary Number: "+Integer.toBinaryString(Integer.parseInt(integerString)));
    }
}
Вывод:
Введите Integer:
10
Двоичный номер: 1010
Использование встроенной функции:
String binaryNum = Integer.toBinaryString(int num);
Если вы не хотите использовать встроенную функцию для преобразования int в двоичный файл, вы также можете сделать это:
import java.util.*;
public class IntToBinary {
    public static void main(String[] args) {
        Scanner d = new Scanner(System.in);
        int n;
        n = d.nextInt();
        StringBuilder sb = new StringBuilder();
        while(n > 0)
        {
           int r = n%2;
           sb.append(r);
           n = n/2;
        }
        System.out.println(sb.reverse());        
    }
}
		Использование встроенной функции:
String binaryNum = Integer.toBinaryString(int num);
Если вы не хотите использовать встроенную функцию для преобразования int в двоичный файл, вы также можете сделать это:
import java.util.*;
public class IntToBinary {
    public static void main(String[] args) {
        Scanner d = new Scanner(System.in);
        int n;
        n = d.nextInt();
        StringBuilder sb = new StringBuilder();
        while(n > 0){
        int r = n%2;
        sb.append(r);
        n = n/2;
        }
        System.out.println(sb.reverse());        
    }
}
		вот мои методы, он немного убеждает, что количество байт зафиксировано
private void printByte(int value) {
String currentBinary = Integer.toBinaryString(256 + value);
System.out.println(currentBinary.substring(currentBinary.length() - 8));
}
public int binaryToInteger(String binary) {
char[] numbers = binary.toCharArray();
int result = 0;
for(int i=numbers.length - 1; i>=0; i--)
  if(numbers[i]=='1')
    result += Math.pow(2, (numbers.length-i - 1));
return result;
}
		Самый простой способ - проверить, не является ли число нечетным. Если это, по определению, его правое двоичное число будет "1" (2 ^ 0). После того, как мы это определим, мы смещаем число вправо и проверяем одно и то же значение с помощью рекурсии.
@Test
public void shouldPrintBinary() {
    StringBuilder sb = new StringBuilder();
    convert(1234, sb);
}
private void convert(int n, StringBuilder sb) {
    if (n > 0) {
        sb.append(n % 2);
        convert(n >> 1, sb);
    } else {
        System.out.println(sb.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
		Это должно быть довольно просто с чем-то вроде этого:
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();
}
		Еще одна возможная реализация:
Вы также можете использовать цикл 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.