45

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.

5

4 Answers 4

77
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

Sign up to request clarification or add additional context in comments.

Comments

13

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

4 Comments

@Jeff: I posted this version because sometimes the new string() technique is useful. You didn't question Gregory's mention of PadRight, and that function doesn't even solve the problem.
How I reacted to someone else's response is entirely irrelevant. I just thought it strange to see you downplay your answer by referring to a better solution that you didn't give and that the suggestion you had was not particular easy to read. As SO is a resource for getting a good answer, you'd be better including the PadLeft solution entirely AND your alternative - you might well be the better answer then. This isn't about first, it's about best.
@Jeff: I prefer a separate post for each answer so that one can easily browse answers without having to wade through duplicates. However, I have made an exception today, and just for you have put 3 answers into a single post.
The third answer was almost approximately what I was looking for. The pattern I needed was 00 00 00 00 ... i think i figured it out :)
1

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

2 Comments

PadRight is a useful method but not in this scenario. I recommend you remove that from your answer (or add every other useful .NET method - I know which I'd pick :D).
Also, they're not extension methods.
0

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.