Байт в двоичную строку C# - Показать все 8 цифр

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

Convert.ToString(MyVeryOwnByte, 2);

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

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

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

4 ответа

Решение
Convert.ToString(MyVeryOwnByte, 2).PadLeft(8, '0');

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

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

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

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

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

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

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

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

public static class ByteExtension
{
    public static string ToBitsString(this byte value)
    {
        return Convert.ToString(value, 2).PadLeft(8, '0');
    }
}
Другие вопросы по тегам