Byte to Binary String C# - Display all 8 digits

2019-01-15 05:28发布

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.

4条回答
霸刀☆藐视天下
2楼-- · 2019-01-15 05:38

Pad the string with zeros. In this case it is PadLeft(length, characterToPadWith). Very useful extension methods. PadRight() is another useful method.

查看更多
【Aperson】
3楼-- · 2019-01-15 05:39

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');
    }
}
查看更多
虎瘦雄心在
4楼-- · 2019-01-15 05:52
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

查看更多
爷的心禁止访问
5楼-- · 2019-01-15 05:58

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");
}
查看更多
登录 后发表回答