一、显式转换
在对数值变量进行显式转换时,可能出现溢出的情况,使用checked关键字可以对溢出进行检查:
int num = 123456;
short num2 = checked((short)num);
Console.WriteLine("num = {0}\nnum2 = {1}", num, num2);
执行代码会出现下面的情况:
除了使用checked外,也可以通过修改系统设置来检查,菜单【项目】->【属性】->【生成】->【高级】->勾选【检查运算上溢/下溢】。设置之后就会对所有的转换进行溢出检查,除非使用unchecked关键字。
二、数字字符串转换为数值(Convert类)
C#提供了一个把字符串转换为各种数值的类——Convert类,具体方法可以查看API。一般为十进制数字字符串和十进制数值之间的转换,这里笔者要记录的是非十进制数字字符串和十进制数值之间的转换。
(1)通过 Convert.ToInt32() 函数可以把非十进制数转换为十进制数:
该函数有两个参数,第一个参数是表示非十进制数的字符串,第二个参数是原数的基数(即要把几进制数转换为十进制) 。
Console.WriteLine(Convert.ToInt32("110011", 2)); //二进制转十进制
Console.WriteLine(Convert.ToInt32("567", 8)); //八进制转十进制
Console.WriteLine(Convert.ToInt32("6F", 16)); //十六进制转十进制
运行结果:
(2)通过 Convert.ToString () 函数可以把十进制转换为非十进制:
该函数也有两个参数,第一个参数是原数(十进制整数) ,第二个参数是目标数的基数(即要把十进制数转换为几进制) 。
Console.WriteLine(Convert.ToString(89, 2)); //十进制转二进制
Console.WriteLine(Convert.ToString(89, 8)); //十进制转八进制
Console.WriteLine(Convert.ToString(89, 16)); //十进制转十六进制
运行结果: