二进制到十进制转换 - 公式?

Nic*_*las 4 c# binary decimal

我已经搜索了一段时间并且还没有得到任何有用的东西,我正在研究子网计算器,而且我使用了十进制到二进制,我在这里找到了,但是,我还没有找到一个好方法将二进制转换为十进制.

注意:记住它的FROM二进制到十进制,无论如何,我需要公式或类似的东西(意思是计算它,而不是自动化的).

我通过阅读其他一些帖子了解到你可以通过除以10得到结果,但我并不是真的理解它,所以如果有人能指出我正确的方向,我会很高兴.

任何和所有的帮助是非常感谢的家伙!:)

Eth*_*own 14

没有LINQ就做了:

var s = "101011";    // my binary "number" as a string
var dec = 0;
for( int i=0; i<s.Length; i++ ) {
  // we start with the least significant digit, and work our way to the left
  if( s[s.Length-i-1] == '0' ) continue;
  dec += (int)Math.Pow( 2, i );
}
Run Code Online (Sandbox Code Playgroud)

任何基数中的数字都可以被认为是其数字的总和乘以它们的地方价值.例如,十进制数3906可以写为:

3*1000 + 9*100 + 0*10 + 6*1
Run Code Online (Sandbox Code Playgroud)

地方价值只是十的权力:

3*10^3 + 9*10^2 + 0*10^1 + 6*10^0
Run Code Online (Sandbox Code Playgroud)

(请记住,任何以0为幂的数字是1.)

二进制的工作方式完全相同,除了基数是2,而不是10.例如,二进制数101011可以写成:

1*2^5 + 0*2^4 + 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0
Run Code Online (Sandbox Code Playgroud)

我希望这能让您更好地理解二进制数以及如何转换它们.

实际上,最好的解决方案是Matt Grande's; 总是更喜欢使用库方法而不是自己滚动(除非你有充分的理由这样做).


Mat*_*nde 12

你可以这样做:

string bin = "10010101010101";
long l = Convert.ToInt64(bin,2);
Run Code Online (Sandbox Code Playgroud)