Convertire un int in una rappresentazione di stringa binaria in Java?


168

Quale sarebbe il modo migliore (idealmente, il più semplice) per convertire un int in una rappresentazione di stringa binaria in Java?

Ad esempio, supponiamo che int sia 156. La rappresentazione di stringa binaria di questo sarebbe "10011100".

Risposte:


330
Integer.toBinaryString(int i)

È conveniente! Esiste un metodo simile per i long?
Tyler Treat

46
@ ttreat31: non intendo che questo sembri snarky, ma dovresti davvero avere la documentazione (in questo caso JavaDoc) prontamente a portata di mano ogni volta che stai programmando. Non dovresti chiedere: è un metodo simile per molto tempo; dovresti cercare di cercarlo piuttosto che digitare il commento.
Lawrence Dol

5
@Jack c'è un modo per ottenere la stringa binaria in un numero fisso di bit come, 8 decimali in binario a 8 bit che 00001000
Kasun Siyambalapitiya,


26
public static string intToBinary(int n)
{
    string s = "";
    while (n > 0)
    {
        s =  ( (n % 2 ) == 0 ? "0" : "1") +s;
        n = n / 2;
    }
    return s;
}

20

Un altro modo-Utilizzando java.lang.Integer è possibile ottenere la rappresentazione di stringa del primo argomento inel radix (Octal - 8, Hex - 16, Binary - 2)specificato dal secondo argomento.

 Integer.toString(i, radix)

Esempio_

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

Produzione_

Binary eqivalent of 100 = 1100100
Octal eqivalent of 100 = 144
Decimal eqivalent of 100 = 100
Hexadecimal eqivalent of 100 = 64

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

Risultati binari = 0111 binari = 111
Artavazd Manukyan

1
String hexString = String.format ("% 2s", Integer.toHexString (h)). Replace ('', '0');
Artavazd Manukyan,

5

Questo è qualcosa che ho scritto pochi minuti fa solo per scherzare. Spero che sia d'aiuto!

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

}


5

Converti intero in binario:

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

}

Produzione:

Inserisci numero intero:

10

Numero binario: 1010


L'eccessiva promozione di uno specifico prodotto / risorsa (che ho rimosso qui) può essere percepita dalla community come spam . Dai un'occhiata al centro assistenza , in particolare Che tipo di comportamento è previsto per gli utenti? ultima sezione: evitare apertamente l'autopromozione . Potresti anche essere interessato a Come posso fare pubblicità su Stack Overflow? .
Tunaki,

4

Utilizzando la funzione integrata:

String binaryNum = Integer.toBinaryString(int num);

Se non vuoi usare la funzione integrata per convertire int in binario, puoi anche farlo:

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

4

L'approccio più semplice è verificare se il numero è dispari. Se è, per definizione, il suo numero binario più a destra sarà "1" (2 ^ 0). Dopo averlo determinato, spostiamo il numero verso destra e controlliamo lo stesso valore usando la ricorsione.

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

1
Questo, penso, è un modo davvero elegante per farlo manualmente, se davvero non vuoi usare i metodi integrati.
praneetloke,

4

ecco i miei metodi, è un po 'convincere quel numero di byte corretti

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

3

L'uso del bit shift è un po 'più veloce ...

public static String convertDecimalToBinary(int N) {

    StringBuilder binary = new StringBuilder(32);

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

    return binary.reverse().toString();

}

2

Questo può essere espresso in pseudocodice come:

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

1

Dovresti davvero usare Integer.toBinaryString () (come mostrato sopra), ma se per qualche motivo vuoi il tuo:

// 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

Questo dovrebbe essere abbastanza semplice con qualcosa del genere:

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();

}

0

Puoi usare while ciclo anche per convertire un int in binario. Come questo,

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

Origine e riferimento: convertire int in binario nell'esempio java .


0
public class BinaryConverter {

    public static String binaryConverter(int number) {
        String binary = "";
        if (number == 1){
            binary = "1";
            System.out.print(binary);
            return binary;
        }
        if (number == 0){
            binary = "0";
            System.out.print(binary);
            return binary;
        }
        if (number > 1) {
            String i = Integer.toString(number % 2);

            binary = binary + i;
            binaryConverter(number/2);
        }
        System.out.print(binary);
        return binary;
    }
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.