简单而快速的方法来将int转换为二进制?

我正在寻找的是像C#中的PHP decbin函数。 该函数将小数转换为其表示forms的string。

例如,当使用decbin(21) ,返回10101

我发现这个function基本上是我想要的,但也许有一个更好/更快的方式?

 var result = Convert.ToString(number, 2); 

– 几乎是(否则无用) Convert类的唯一用法。

大多数方法会比你find的function更好更快。 这不是一个很好的例子,如何做转换。

内置方法Convert.ToString(num, base)是一个明显的select,但是如果需要以不同的方式工作,则可以轻松地编写replace。

这是一个简单的方法,您可以指定二进制数的长度:

 public static string ToBin(int value, int len) { return (len > 1 ? ToBin(value >> 1, len - 1) : null) + "01"[value & 1]; } 

它使用recursion,第一部分(在+之前)调用自己创build数字的二进制表示,除了最后一位数字,第二部分照顾最后一位数字。

例:

 Console.WriteLine(ToBin(42, 8)); 

输出:

 00101010 
 int toBase = 2; string binary = Convert.ToString(21, toBase); // "10101" 

要在(至less)指定的位数中得到二进制值,用零填充:

 string bin = Convert.ToString(1234, 2).PadLeft(16, '0'); 

Convert.ToString将转换为二进制string。
PadLeft将零填充到16位数字。

这是我的答案:

  static bool[] Dec2Bin(int value) { if (value == 0) return new[] { false }; var n = (int)(Math.Log(value) / Math.Log(2)); var a = new bool[n + 1]; for (var i = n; i >= 0; i--) { n = (int)Math.Pow(2, i); if (n > value) continue; a[i] = true; value -= n; } Array.Reverse(a); return a; } 

用Pow而不是模和分,所以我认为这是更快的方法。