Conversion d'un int en une représentation sous forme de chaîne binaire en Java?

168

Quelle serait la meilleure façon (idéalement, la plus simple) de convertir un int en une représentation sous forme de chaîne binaire en Java?

Par exemple, disons que int est 156. La représentation sous forme de chaîne binaire de ceci serait "10011100".

Friandise Tyler
la source

Réponses:

330
Integer.toBinaryString(int i)
Jack
la source
C'est pratique! Existe-t-il une méthode similaire pour les longs?
Tyler Treat
46
@ ttreat31: Je ne veux pas dire que cela semble sournois, mais vous devriez vraiment avoir la documentation (dans ce cas JavaDoc) à portée de main chaque fois que vous programmez. Vous ne devriez pas avoir à demander: est-ce que leur méthode est similaire pour les longs; il vous faudra pour le rechercher plutôt que pour taper le commentaire.
Lawrence Dol
5
@Jack existe-t-il un moyen d'obtenir la chaîne binaire dans un nombre fixe de bits comme, décimal 8 en binaire 8 bits qui 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;
}
Ariel Badilla
la source
20

Une autre façon - En utilisant java.lang.Integer, vous pouvez obtenir une représentation sous forme de chaîne du premier argument idans le radix (Octal - 8, Hex - 16, Binary - 2)spécifié par le deuxième argument.

 Integer.toString(i, radix)

Exemple_

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

Production_

Binary eqivalent of 100 = 1100100
Octal eqivalent of 100 = 144
Decimal eqivalent of 100 = 100
Hexadecimal eqivalent of 100 = 64
Rupesh Yadav
la source
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
la source
Résultats binaire = 0111 binaire = 111
Artavazd Manukyan
1
String hexString = String.format ("% 2s", Integer.toHexString (h)). Replace ('', '0');
Artavazd Manukyan
5

C'est quelque chose que j'ai écrit il y a quelques minutes pour déconner. J'espère que ça aide!

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
la source
5

Convertir un entier en binaire:

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

}

Production:

Entrez un entier:

dix

Nombre binaire: 1010

Sidarth
la source
Une promotion excessive d'un produit / d'une ressource spécifique (que j'ai supprimé ici) peut être perçue par la communauté comme du spam . Jetez un œil au centre d'aide , spécialement Quel type de comportement est attendu des utilisateurs? Dernière section: Évitez l'auto-promotion manifeste . Vous pourriez également être intéressé par Comment faire de la publicité sur Stack Overflow? .
Tunaki
4

Utilisation de la fonction intégrée:

String binaryNum = Integer.toBinaryString(int num);

Si vous ne souhaitez pas utiliser la fonction intégrée pour convertir un int en binaire, vous pouvez également le faire:

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
la source
4

L'approche la plus simple consiste à vérifier si le nombre est impair ou non. Si c'est le cas, par définition, son nombre binaire le plus à droite sera "1" (2 ^ 0). Après avoir déterminé cela, nous décalons le nombre vers la droite et vérifions la même valeur en utilisant la récursivité.

@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());
    }
}
rien_ sauvage
la source
1
C'est, je pense, une façon très élégante de le faire manuellement, si vous ne voulez vraiment pas utiliser les méthodes intégrées.
praneetloke
4

voici mes méthodes, c'est un peu convaincre que le nombre d'octets fixe

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
la source
3

L'utilisation du bit shift est un peu plus rapide ...

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
la source
2

Cela peut être exprimé en pseudo-code comme:

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
la source
1

Vous devriez vraiment utiliser Integer.toBinaryString () (comme indiqué ci-dessus), mais si pour une raison quelconque vous voulez le vôtre:

// 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);
}
réfléchir
la source
0

Cela devrait être assez simple avec quelque chose comme ceci:

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
la source
0

Vous pouvez également utiliser la boucle while pour convertir un int en binaire. Comme ça,

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

Source et référence - convertir un int en binaire dans l' exemple java .

Shiva
la source
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
la source