Байт в двоичную строку C # - Показать все 8 цифр - PullRequest
37 голосов
/ 28 января 2011

Я хочу отобразить один байт в текстовом поле.Теперь я использую:

Convert.ToString(MyVeryOwnByte, 2);

Но когда байт имеет 0 в начале, то эти 0 отбираются.Пример:

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

Я хочу отобразить все 8 цифр.

Ответы [ 4 ]

68 голосов
/ 28 января 2011
Convert.ToString(MyVeryOwnByte, 2).PadLeft(8, '0');

Это заполнит пустое пространство слева с '0' в общей сложности 8 символов в строке

11 голосов
/ 28 января 2011

Как вы это сделаете, зависит от того, как вы хотите, чтобы ваш вывод выглядел.

Если вы просто хотите «00011011», используйте такую ​​функцию:

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

Если вы хотите выводить как «000 11011 », используйте такую ​​функцию:

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

Если вы хотите выводить как "0001 1011", функция, подобная этой, может быть лучше:

static string PadNibble(byte b)
{
    return Int32.Parse(Convert.ToString(b, 2)).ToString("0000 0000");
}
1 голос
/ 28 января 2011

Дополните строку нулями. В этом случае это PadLeft(length, characterToPadWith). Очень полезные методы расширения. PadRight() - еще один полезный метод.

0 голосов
/ 06 сентября 2018

Вы можете создать метод расширения:

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