2012-03-04 72 views
1

我可以用Convert.ToString整数转换成它的二进制表示:扩展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

回答

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) 

也没有必要通过签订只是约定(有问题),我将它传递。

1

您不能扩展Convert.ToString功能本身,因为它是static,但你可以很容易地只使用.PadLeft

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

而且当然,随时可以把它变成你自己的功能。但是你不能把它放进Convert

+0

Downvote reason,any? – Ryan 2012-03-04 01:01:35