Reputation: 29683
I want to display one byte in textbox. Now I'm using:
Convert.ToString(MyVeryOwnByte, 2);
But when byte is has 0's at begining those 0's are being cut. Example:
MyVeryOwnByte = 00001110 // Texbox shows -> 1110
MyVeryOwnByte = 01010101 // Texbox shows -> 1010101
MyVeryOwnByte = 00000000 // Texbox shows -> <Empty>
MyVeryOwnByte = 00000001 // Texbox shows -> 1
I want to display all 8 digits.
Upvotes: 44
Views: 56721
Reputation: 31663
You can create an extension method:
public static class ByteExtension
{
public static string ToBitsString(this byte value)
{
return Convert.ToString(value, 2).PadLeft(8, '0');
}
}
Upvotes: 0
Reputation: 86768
How you do it depends on how you want your output to look.
If you just want "00011011", use a function like this:
static string Pad(byte b)
{
return Convert.ToString(b, 2).PadLeft(8, '0');
}
If you want output like "00011011", use a function like this:
static string PadBold(byte b)
{
string bin = Convert.ToString(b, 2);
return new string('0', 8 - bin.Length) + "<b>" + bin + "</b>";
}
If you want output like "0001 1011", a function like this might be better:
static string PadNibble(byte b)
{
return Int32.Parse(Convert.ToString(b, 2)).ToString("0000 0000");
}
Upvotes: 13
Reputation: 17010
Pad the string with zeros. In this case it is PadLeft(length, characterToPadWith)
. Very useful extension methods. PadRight()
is another useful method.
Upvotes: 1
Reputation: 18013
Convert.ToString(MyVeryOwnByte, 2).PadLeft(8, '0');
This will fill the empty space to the left with '0' for a total of 8 characters in the string
Upvotes: 77