Преобразование int в двоичное строковое представление в Java?

Какой был бы лучший способ (в идеале, самый простой) преобразовать 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 powers = new ArrayList(); ArrayList binaryStore = new ArrayList(); 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()); } } 

Самый простой подход – проверить, не является ли число нечетным. Если это, по определению, его правое двоичное число будет «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()); } } 

вот мои методы, это немного убеждает, что количество байт исправлено

 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; } 

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

 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(); } в 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 .

Вы действительно должны использовать 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); } 
  • Как печатать (используя cout) способ хранения числа в памяти?
  • В Java можно определить целочисленную константу в двоичном формате?
  • Преобразование двоичной строки в байтовый массив
  • Почему мы используем Base64?
  • Включить двоичный файл с помощью скрипта GNU ld linker
  • Можно ли использовать бинарный литерал в C или C ++?
  • Преобразование длинной строки двоичного кода в hex c #
  • Эффективно конвертировать между шестнадцатеричными, двоичными и десятичными в C / C ++
  • Преобразование двоичной строки в целое число
  • Захват двоичного вывода из Process.StandardOutput
  • Преобразование шестнадцатеричной строки (hex) в двоичную строку
  • Interesting Posts

    Используйте пользовательский разделитель тысяч в C #

    Модификатор static разрешен только в объявлениях с постоянной переменной

    Запланировать задачу с правами администратора без приглашения пользователя в Windows 7

    Django: разрешение отклонено при попытке доступа к базе данных после восстановления (миграции)

    как использовать 32-разрядные собственные библиотеки на 64-битной платформе Android-L

    Накопитель MatLab неожиданно меняет порядок

    В чем разница между MOV и LEA?

    Как определить тип сжатия, используемый в файле? (если не указано расширение файла)

    Как я могу получить функцию масштабирования для изображений?

    Почему атрибут «немедленного» был добавлен в EditableValueHolders?

    Должен ли доступ к SharedPreferences делать из streamа пользовательского интерфейса?

    Android: быстрое размытие растрового изображения?

    Как подключиться к источнику данных MySQL в Visual Studio

    Как реализовать сжатие GZip в ASP.NET?

    Word 2010 – ключ реестра для параметров автозамены

    Давайте будем гением компьютера.