【问题标题】:Byte to Binary String C# - Display all 8 digits字节到二进制字符串 C# - 显示所有 8 位数字
【发布时间】:2011-06-17 07:02:54
【问题描述】:

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

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 位数字。

【问题讨论】:

标签: c# .net string byte bit


【解决方案1】:
Convert.ToString(MyVeryOwnByte, 2).PadLeft(8, '0');

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • PadRight 是一种有用的方法,但在这种情况下不是。我建议您从答案中删除它(或添加所有其他有用的 .NET 方法 - 我知道我会选择哪个:D)。
    • 另外,它们不是扩展方法。
    【解决方案3】:

    如何实现取决于您希望输出的外观。

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

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

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

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

    【讨论】:

    • @Jeff:我发布这个版本是因为有时new string() 技术很有用。你没有质疑 Gregory 提到的PadRight,而且那个功能甚至不能解决问题。
    • 我对别人的反应的反应完全无关紧要。我只是觉得很奇怪看到你通过引用一个你没有给出的更好的解决方案来淡化你的答案,并且你的建议不是特别容易阅读。由于 SO 是获得良好答案的资源,因此您最好完全包含 PadLeft 解决方案和您的替代方案 - 那时您可能是更好的答案。这不是第一,而是最好。
    • @Jeff:我更喜欢为每个答案单独发布一个帖子,这样人们就可以轻松浏览答案,而不必费力地翻阅重复内容。不过,我今天破例了,只是为了你把3个答案放在一个帖子里。
    • 第三个答案几乎是我想要的。我需要的模式是 00 00 00 00 ...我想我想通了 :)
    【解决方案4】:

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

    public static class ByteExtension
    {
        public static string ToBitsString(this byte value)
        {
            return Convert.ToString(value, 2).PadLeft(8, '0');
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      • 2017-03-09
      • 1970-01-01
      相关资源
      最近更新 更多