C#实现二、八、十六进制数转十进制数的算法2010-12-19二进制换为十进制的方法,例如:二进制数:11001十进制数:1*2
4+1*2
3+0*2
2+0*2
1+1*2
0=25八进制换为十进制的方法,例如:八进制数:32007十进制数:3*8
4+2*8
3+0*8
2+0*8
1+7*8
0=13319十六进制换为十进制的方法,例如:十六进制数:a20f(由于十六进制数用a~f表示10~15之间的数,所以计算时将a~f用10~15表示)十进制数: 10*8
3+2*8
2+0*8
1+15*8
0=41487通过以上二、八、十六进制数转十进制数的计算方法,可得出计算的代码为:
//参数Num为需要转换的数,n为该数的进制
public string ToD(string Num, int n)
{
char[] nums=Num.ToCharArray ();
int d = 0;
for (int i = 0; i <nums.Length ; i++)
{
string number=nums [i].ToString ();
if (n == 16)
{
switch (number.ToUpper ())
{
case "A":
number = "10";
break;
case "B":
number = "11";
break;
case "C":
number = "12";
break;
case "D":
number = "13";
break;
case "E":
number = "14";
break;
case "F":
number = "15";
break;
}
}
Double power = Math.Pow(Convert.ToDouble (n),Convert.ToDouble ( nums.Length - (i + 1)));
d = d + Convert.ToInt32 (number) * Convert.ToInt32 (power);
}
return d.ToString ();
}