42

我想在文本框中显示一个字节。现在我正在使用:

Convert.ToString(MyVeryOwnByte, 2);

但是当字节在开始时有 0 时,这些 0 正在被剪切。例子:

MyVeryOwnByte = 00001110 // Texbox shows -> 1110
MyVeryOwnByte = 01010101 // Texbox shows -> 1010101
MyVeryOwnByte = 00000000 // Texbox shows -> <Empty>
MyVeryOwnByte = 00000001 // Texbox shows -> 1

我想显示所有 8 位数字。

4

4 回答 4

74
Convert.ToString(MyVeryOwnByte, 2).PadLeft(8, '0');

这将用“0”填充左侧的空白区域,字符串中总共有 8 个字符

于 2011-01-28T14:37:57.030 回答
12

你如何做取决于你希望你的输出看起来如何。

如果您只想要“00011011”,请使用如下函数:

static string Pad(byte b)
{
    return Convert.ToString(b, 2).PadLeft(8, '0');
}

如果你想要像“000 11011 ”这样的输出,使用这样的函数:

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");
}
于 2011-01-28T14:39:21.833 回答
1

用零填充字符串。在这种情况下,它是PadLeft(length, characterToPadWith)。非常有用的扩展方法。PadRight()是另一种有用的方法。

于 2011-01-28T14:39:06.717 回答
0

您可以创建一个扩展方法:

public static class ByteExtension
{
    public static string ToBitsString(this byte value)
    {
        return Convert.ToString(value, 2).PadLeft(8, '0');
    }
}
于 2018-09-06T08:22:23.283 回答