236 votes

Convertir un nombre entier en binaire en C#

Comment convertir un nombre entier en sa représentation binaire ?

J'utilise ce code :

String input = "8";
String output = Convert.ToInt32(input, 2).ToString();

Mais il y a une exception :

Impossible de trouver des chiffres analysables

1 votes

Essayez-vous de convertir la représentation en chaîne d'un nombre, ou un nombre réel ? Et essayez-vous de convertir en décimal, ou en int ? Votre exemple ne correspond pas vraiment à votre question.

0 votes

Si vous cherchez à convertir des décimales en octets, vous pouvez utiliser ce code : gist.github.com/eranbetzalel/

1 votes

Vous essayez d'analyser une chaîne en base 10 en base 2. C'est pourquoi l'appel échoue.

458voto

Anthony Pegram Points 58528

Dans votre exemple, un nombre entier est exprimé sous forme de chaîne. Imaginons que votre entier soit en fait un nombre entier, et que vous vouliez prendre cet entier et le convertir en une chaîne binaire.

int value = 8;
string binary = Convert.ToString(value, 2);

Ce qui donne 1000.

1 votes

Existe-t-il une méthode similaire pour convertir le binaire en décimal ?

46 votes

@kashif int value = Convert.ToInt32("1101", 2) donnerait value la valeur 13.

0 votes

Comment cela fonctionne-t-il ? Le "2" est-il la base et fonctionnera-t-il pour n'importe quelle base ?

54voto

sritmak Points 169

Conversion de n'importe quelle base classique en n'importe quelle base en C#

string number = "100";
int fromBase = 16;
int toBase = 10;

string result = Convert.ToString(Convert.ToInt32(number, fromBase), toBase);

// result == "256"

Les bases prises en charge sont 2, 8, 10 et 16.

1 votes

Cela ne marchera pas. J'ai simplement essayé string binary = Convert.ToString(533, 26); et j'ai obtenu une ArgumentException : Base invalide

8 votes

Oui, d'après MSDN : seules les bases classiques sont supportées. msdn.microsoft.com/fr/us/library/8s62fh68(v=vs.110).aspx Type de toBase : System.Int32 La base de la valeur de retour, qui doit être 2, 8, 10 ou 16.

38voto

Xenon Points 71

Très simple, sans code supplémentaire, juste entrée, conversion et sortie.

using System;

namespace _01.Decimal_to_Binary
{
    class DecimalToBinary
    {
        static void Main(string[] args)
        {
            Console.Write("Decimal: ");
            int decimalNumber = int.Parse(Console.ReadLine());

            int remainder;
            string result = string.Empty;
            while (decimalNumber > 0)
            {
                remainder = decimalNumber % 2;
                decimalNumber /= 2;
                result = remainder.ToString() + result;
            }
            Console.WriteLine("Binary:  {0}",result);
        }
    }
}

1 votes

Pour un alphabet générique, cela devrait être do{ [...] }while(decimalNumber > 0) ;

0 votes

Dans le cas où decimalNumber = 0, le résultat est Empty. Veuillez mettre à jour en while (decimalNumber > 0 || string.IsNullOrEmpty(result))

13voto

Zamir Points 49

http://zamirsblog.blogspot.com/2011/10/convert-decimal-to-binary-in-c.html

    public string DecimalToBinary(string data)
    {
        string result = string.Empty;
        int rem = 0;
        try
        {
            if (!IsNumeric(data))
                error = "Invalid Value - This is not a numeric value";
            else
            {
                int num = int.Parse(data);
                while (num > 0)
                {
                    rem = num % 2;
                    num = num / 2;
                    result = rem.ToString() + result;
                }
            }
        }
        catch (Exception ex)
        {
            error = ex.Message;
        }
        return result;
    }

2 votes

Je ne vois pas en quoi cela diffère de la réponse de Xenon.

5 votes

Il a répondu à cette question avant Xenon

8voto

egrunin Points 15356

Convert.ToInt32(string, base) ne fait pas de conversion en base dans votre base. Il suppose que la chaîne de caractères contient un nombre valide dans la base indiquée, et convertit en base 10.

Vous obtenez donc une erreur parce que "8" n'est pas un chiffre valide en base 2.

String str = "1111";
String Ans = Convert.ToInt32(str, 2).ToString();

Montrera 15 (1111 base 2 = 15 base 10)

String str = "f000";
String Ans = Convert.ToInt32(str, 16).ToString();

Montrera 61440 .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X