问题
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 cuted. 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.
回答1:
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
回答2:
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");
}
回答3:
Pad the string with zeros. In this case it is PadLeft(length, characterToPadWith)
. Very useful extension methods. PadRight()
is another useful method.
回答4:
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');
}
}
来源:https://stackoverflow.com/questions/4829366/byte-to-binary-string-c-sharp-display-all-8-digits