你有一个包含二进制数、八进制数、十进制数或十六进制数的字符串。你需要把它转换为等价的数值并用十进制表示出来。
解决方法:
要把一个其他进制的数转换为十进制数,只要用Convert类的被重载的静态方法Convert.ToInt32即可:
string base2 = "11";
string base8 = "17";
string base10 = "110";
string base16 = "11FF";
Console.WriteLine("Convert.ToInt32(base2, 2) = " +
Convert.ToInt32(base2, 2));
Console.WriteLine("Convert.ToInt32(base8, 8) = " +
Convert.ToInt32(base8, 8));
Console.WriteLine("Convert.ToInt32(base10, 10) = " +
Convert.ToInt32(base10, 10));
Console.WriteLine("Convert.ToInt32(base16, 16) = " +
Convert.ToInt32(base16, 16));
string base8 = "17";
string base10 = "110";
string base16 = "11FF";
Console.WriteLine("Convert.ToInt32(base2, 2) = " +
Convert.ToInt32(base2, 2));
Console.WriteLine("Convert.ToInt32(base8, 8) = " +
Convert.ToInt32(base8, 8));
Console.WriteLine("Convert.ToInt32(base10, 10) = " +
Convert.ToInt32(base10, 10));
Console.WriteLine("Convert.ToInt32(base16, 16) = " +
Convert.ToInt32(base16, 16));
这段代码产生这样的输出结果:
Convert.ToInt32(base2, 2) = 3
Convert.ToInt32(base8, 8) = 15
Convert.ToInt32(base10, 10) = 110
Convert.ToInt32(base16, 16) = 4607
Convert.ToInt32(base8, 8) = 15
Convert.ToInt32(base10, 10) = 110
Convert.ToInt32(base16, 16) = 4607
讨论:
静态方法Convert.ToInt32有两个参数,一个包含数字的字符串和一个表示该数字进制的整数。接着这个函数就会把这个数字字符串转换为十进制整数了。
Convert类的其他静态函数,比如ToByte,ToInt64和ToInt16,也有类似的重载,即接受一个字符串类型的数字和一个表示该数字进制的整数。不过这些方法只能转换那些二进制、八进制、十进制或十六进制的数。它们只能把这些数转换为十进制的数。但是,任何类型的数值的ToString都可以转换成string类型。