Konvertieren eines int in eine binäre Zeichenfolgendarstellung in Java?

168

Was wäre der beste (idealerweise einfachste) Weg, um ein int in eine binäre Zeichenfolgendarstellung in Java zu konvertieren?

Angenommen, int ist 156. Die binäre Zeichenfolgendarstellung hierfür wäre "10011100".

Tyler Treat
quelle

Antworten:

327
Integer.toBinaryString(int i)
Jack
quelle
Das ist praktisch! Gibt es eine ähnliche Methode für Longs?
Tyler Treat
46
@ ttreat31: Ich meine nicht, dass dies snarky klingt, aber Sie sollten die Dokumentation (in diesem Fall JavaDoc) wirklich immer zur Hand haben, wenn Sie programmieren. Sie sollten nicht fragen müssen: Ist ihre Methode für Longs ähnlich? Es sollte dauern, bis Sie es nachgeschlagen haben, als den Kommentar einzugeben.
Lawrence Dol
5
@ Jack gibt es eine Möglichkeit, die Binärzeichenfolge in einer festen Anzahl von Bits wie Dezimal 8 in 8-Bit-Binär, die 00001000
Kasun Siyambalapitiya
25
public static string intToBinary(int n)
{
    string s = "";
    while (n > 0)
    {
        s =  ( (n % 2 ) == 0 ? "0" : "1") +s;
        n = n / 2;
    }
    return s;
}
Ariel Badilla
quelle
20

Noch eine Möglichkeit: Mit java.lang.Integer können Sie eine Zeichenfolgendarstellung des ersten Arguments iin dem radix (Octal - 8, Hex - 16, Binary - 2)durch das zweite Argument angegebenen erhalten.

 Integer.toString(i, radix)

Beispiel_

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

Ausgabe_

Binary eqivalent of 100 = 1100100
Octal eqivalent of 100 = 144
Decimal eqivalent of 100 = 100
Hexadecimal eqivalent of 100 = 64
Rupesh Yadav
quelle
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));
    }
}
Artavazd Manukyan
quelle
Ergebnisse binär = 0111 binär = 111
Artavazd Manukyan
1
String hexString = String.format ("% 2s", Integer.toHexString (h)). Replace ('', '0');
Artavazd Manukyan
5

Dies ist etwas, das ich vor ein paar Minuten geschrieben habe, nur um herumzuspielen. Ich hoffe es hilft!

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

}}

AbbyPaden
quelle
5

Ganzzahl in Binär konvertieren:

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

}

Ausgabe:

Ganzzahl eingeben:

10

Binärzahl: 1010

Sidarth
quelle
Übermäßige Werbung für ein bestimmtes Produkt / eine bestimmte Ressource (die ich hier entfernt habe) kann von der Community als Spam wahrgenommen werden . Werfen Sie einen Blick in die Hilfe , insbesondere Welche Verhaltensweisen werden von Benutzern erwartet? Letzter Abschnitt: Vermeiden Sie offene Eigenwerbung . Vielleicht interessiert Sie auch: Wie mache ich Werbung für Stack Overflow? .
Tunaki
4

Verwenden der integrierten Funktion:

String binaryNum = Integer.toBinaryString(int num);

Wenn Sie die integrierte Funktion nicht zum Konvertieren von int in binär verwenden möchten, können Sie dies auch tun:

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());        
    }
}
Rachit Srivastava
quelle
4

Der einfachste Ansatz besteht darin, zu überprüfen, ob die Zahl ungerade ist oder nicht. Wenn dies per Definition der Fall ist, ist die am weitesten rechts stehende Binärzahl "1" (2 ^ 0). Nachdem wir dies festgestellt haben, verschieben wir die Zahl nach rechts und überprüfen denselben Wert mithilfe der Rekursion.

@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());
    }
}
wild_nothing
quelle
1
Ich denke, dies ist eine sehr elegante Möglichkeit, dies manuell zu tun, wenn Sie die integrierten Methoden wirklich nicht verwenden möchten.
Praneetloke
4

Hier sind meine Methoden, es ist ein bisschen zu überzeugen, dass die Anzahl der Bytes fest ist

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;
}
Aleksey Timoshchenko
quelle
3

Die Verwendung der Bitverschiebung ist etwas schneller ...

public static String convertDecimalToBinary(int N) {

    StringBuilder binary = new StringBuilder(32);

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

    return binary.reverse().toString();

}
Eddie B.
quelle
2

Dies kann im Pseudocode ausgedrückt werden als:

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
amoljdv06
quelle
1

Sie sollten Integer.toBinaryString () (wie oben gezeigt) wirklich verwenden , aber wenn Sie aus irgendeinem Grund Ihre eigene möchten:

// 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);
}
überdenken
quelle
0

Dies sollte mit so etwas ganz einfach sein:

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

}
Sandeep Saini
quelle
0

Sie können auch die while-Schleife verwenden, um ein int in ein binäres zu konvertieren. So was,

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

Quelle und Referenz - Konvertieren Sie im Java- Beispiel int in binär .

Shiva
quelle
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;
    }
}
Ahmed Saka
quelle