web-dev-qa-db-fra.com

Octet en chaîne binaire C # - Affiche les 8 chiffres

Je souhaite afficher un octet dans la zone de texte . J'utilise maintenant:

Convert.ToString(MyVeryOwnByte, 2);

Mais quand l'octet est a 0 au début, ces 0 sont coupés ..

MyVeryOwnByte = 00001110 // Texbox shows -> 1110
MyVeryOwnByte = 01010101 // Texbox shows -> 1010101
MyVeryOwnByte = 00000000 // Texbox shows -> <Empty>
MyVeryOwnByte = 00000001 // Texbox shows -> 1

Je veux afficher tous les 8 chiffres.

35
Hooch
Convert.ToString(MyVeryOwnByte, 2).PadLeft(8, '0');

Ceci remplira l'espace vide à gauche avec '0' pour un total de 8 caractères dans la chaîne

66
WraithNath

La façon dont vous le faites dépend de l'apparence que vous souhaitez donner à votre sortie.

Si vous voulez juste "00011011", utilisez une fonction comme celle-ci:

static string Pad(byte b)
{
    return Convert.ToString(b, 2).PadLeft(8, '0');
}

Si vous voulez une sortie comme "00011011", utilisez une fonction comme celle-ci:

static string PadBold(byte b)
{
    string bin = Convert.ToString(b, 2);
    return new string('0', 8 - bin.Length) + "<b>" + bin + "</b>";
}

Si vous voulez une sortie comme "0001 1011", une fonction comme celle-ci pourrait être meilleure:

static string PadNibble(byte b)
{
    return Int32.Parse(Convert.ToString(b, 2)).ToString("0000 0000");
}
10
Gabe

Pad la chaîne avec des zéros. Dans ce cas, il s'agit de PadLeft(length, characterToPadWith). Méthodes d'extension très utiles. PadRight() est une autre méthode utile.

1
Gregory A Beamer

Vous pouvez créer une méthode d'extension:

public static class ByteExtension
{
    public static string ToBitsString(this byte value)
    {
        return Convert.ToString(value, 2).PadLeft(8, '0');
    }
}
0
Mariusz Jamro