将int转换为二进制的简单快捷方法?

Max*_*Max 61 c#

我正在寻找的是像decbinC#中的PHP 函数.该函数将小数转换为字符串表示形式.

例如,使用decbin(21)它时返回10101结果.

我发现这个功能基本上可以实现我想要的功能,但也许有更好/更快的方式?

Kon*_*lph 159

var result = Convert.ToString(number, 2);
Run Code Online (Sandbox Code Playgroud)

- 几乎是(无用)Convert课程的唯一用途.

  • 哇,还有另一种用途,转换为Convert.ToDateTime !! 非常好. (3认同)
  • 大声笑,当您进行反射和泛型转换时总是有用的,但是很有趣! (2认同)

Guf*_*ffa 30

大多数方法会比您找到的功能更好更快.这不是一个关于如何进行转换的非常好的例子.

内置方法Convert.ToString(num, base)是一个明显的选择,但如果您需要以不同的方式工作,则可以轻松编写替换方法.

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

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

它使用递归,第一部分(在+之前)调用自身来创建除最后一个数字之外的数字的二进制表示,第二部分处理最后一个数字.

例:

Console.WriteLine(ToBin(42, 8));
Run Code Online (Sandbox Code Playgroud)

输出:

00101010
Run Code Online (Sandbox Code Playgroud)

  • +1递归.虽然我真的不喜欢那里使用`null`,而````也可以. (2认同)
  • 虽然你的例子很好,但请注意,这个特定的函数可以更简单有效地实现:`string s = Convert.ToString(value,2); 返回新字符串('0',len - s.Length)+ s;`(假设二进制数符合提供的长度) (2认同)

Rub*_*ias 9

int toBase = 2;
string binary = Convert.ToString(21, toBase); // "10101"
Run Code Online (Sandbox Code Playgroud)


Han*_*ing 5

要使二进制值(至少)指定位数,并用零填充:

string bin = Convert.ToString(1234, 2).PadLeft(16, '0');
Run Code Online (Sandbox Code Playgroud)

Convert.ToString 转换为二进制字符串。
PadLeft 添加零以填充最多 16 位数字。