【问题标题】:Extend Convert.ToString() to pad binary output扩展 Convert.ToString() 以填充二进制输出
【发布时间】:2012-03-04 09:11:08
【问题描述】:

我可以使用Convert.ToString 将整数转换为其二进制表示:

int x = 10;
string value = Convert.ToString(x, 2);
Console.WriteLine(value);

我收到1100

它甚至可以处理负数,因为我得到了111...0110(32 位)。

int x = -10;
string value = Convert.ToString(x, 2);
Console.WriteLine(value);

如何扩展此函数,以便我可以给第三个参数以得到位填充为 0(正值)或 1(负值)的结果?

例如,Convert.ToString(10, 2, 5) --> 01100Convert.ToString(-10, 2, 5) --> 10110

【问题讨论】:

    标签: c#


    【解决方案1】:

    我会写我自己的扩展:

    public static class ConvertEx
    {
        public static string ToStringEx(this int input, int baseVal, int sign)
        {
           var result = sign.ToString();
           result += Convert.ToString(input, baseVal);
           return result;
        }
    }
    

    称之为:

    (-10).ToStringEx(2,1)
    

    也没有必要仅仅为了约定而通过标志(有问题)我通过它。

    【讨论】:

      【解决方案2】:

      您不能像这样扩展Convert.ToString 函数,因为它是static,但您可以轻松地使用.PadLeft

      int x = 10;
      string value = Convert.ToString(x, 2).PadLeft(5, '0');
      Console.WriteLine(value);

      当然,您也可以随意将其变成您自己的功能。但是你不能把它放在Convert里面。

      【讨论】:

        【解决方案3】:

        您正在寻找的是扩展方法:http://msdn.microsoft.com/en-us/library/bb383977.aspx

        【讨论】:

        • 扩展方法不适用于静态类(它们不会向类“添加”静态方法)
        猜你喜欢
        • 1970-01-01
        • 2018-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多