我已经搜索了一段时间并且还没有得到任何有用的东西,我正在使用子网计算器,而且我已经使用了我在这里找到的十进制到二进制,但是,我还没有找到将二进制转换为十进制的好方法。
注意:记住它的FROM二进制到十进制,无论如何,我需要公式或类似的东西(意思是计算它,而不是自动计算)。
通过阅读其他一些帖子,你可以通过除以10得到结果,我已经明白了,但我并不是真的理解它,所以如果有人能指出我正确的方向,我会很高兴
任何和所有帮助都非常感谢大家! :)
答案 0 :(得分: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 );
}
任何基数中的数字都可以被认为是其数字之和乘以其地方价值。例如,十进制数3906可以写为:
3*1000 + 9*100 + 0*10 + 6*1
地方价值只是10的权力:
3*10^3 + 9*10^2 + 0*10^1 + 6*10^0
(请记住,任何以0为幂的数字都是1.)
Binary的工作方式完全相同,除了base是2,而不是10.例如,二进制数101011可以写成:
1*2^5 + 0*2^4 + 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0
我希望这能让您更好地理解二进制数以及如何转换它们。
实际上,最好的解决方案是Matt Grande's;总是更喜欢使用库方法而不是自己滚动(除非你有充分的理由这样做)。
答案 1 :(得分:12)
你可以这样做:
string bin = "10010101010101";
long l = Convert.ToInt64(bin,2);
答案 2 :(得分:3)
11010101 = 1 * 2 ^ 7 + 1 * 2 ^ 6 + 0 < / strong> * 2 ^ 5 + 1 * 2 ^ 4 + 0 * 2 ^ 3 + 1 * 2 ^ 2 + 0 * 2 ^ 1 + 1 < /强> * 2 ^ 0
................. = 128 + 64 + 0 + 16 + 0 + 4 + 0 + 1
答案 3 :(得分:3)
这很好用
using System;
class BinaryToDecimal
{
static void Main()
{
double sum = 0;
int n = 1111111; // binary number
int strn = n.ToString().Length; //how many digits has my number
for (int i = 0; i < strn; i++)
{
int lastDigit = n % 10; // get the last digit
sum = sum + lastDigit * (Math.Pow(2, i));
n = n / 10; //remove the last digit
}
Console.WriteLine(sum);
}
}
答案 4 :(得分:1)
答案非常简单。我们假设你有x
作为二进制数:
string x = "10010101010101";
因为我们知道要计算的通用公式是从右边开始2^index_1 + 2^index_2 + 2^index_n
我们可以使用LINQ做类似的事情(未经测试):
x.Reverse()
.Select((element, i) => new { Index = i, Element = char.GetNumericValue(element) })
.Where(a => a.Element != 0)
.Aggregate(0.0, (a, b) => a + (Math.Pow(2, b.Index)));
答案 5 :(得分:0)
//a is an integer array which has binary value
sum = 0;
Array.Reverse(a);
for (int j = 0; j < a.Length;j++)
{
if (a[j] == 1)
sum = sum + (Math.Pow(2, j));
}
答案 6 :(得分:0)
这是我的..
private string binary2DecimalCal(string bin)
{
string res;
char[] cArr = bin.ToCharArray();
Array.Reverse(cArr); // Reverse binary string
List<string> sArr = new List<string>();
for (int i = bin.Length - 1; i > -1; i--) // Get the bits
sArr.Add(cArr[i].ToString()+"x2^"+i.ToString()); // Calculation step for each bits
res = String.Join(" + ", sArr.ToArray()); // Join the string with +
return res;
}