Байт в двоичную строку 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');
}
}