摘自网络的一段话:
“在程序代码中,可以用多种方式表示数据,十进制、十六进制、八进制都是常用的表示方式,但计算机内部永远就只使用二进制,与你写程序时用什么无关。你说要定义数组int a[10],其中涉及具体数据表示的就只有十进制数10,但这个数值你完全可以用十六进制表示,写int a[0x0A],最终结果都是一样的,数组a都是(十进制)10个元素。至于如果你说数组a中要储存十六进制数据,那也是跟这个完全一样,计算机内部就只认识那些二进制数,呈现出来人眼要观察那些数据,是你希望它以什么进制显示出来给你看而已,你希望看十进制,就命令它用十进制显示,希望看十六进制,就命令它用十六进制显示,无论显示的是什么进制,数值本身永远是一样的,输入时,也不管你用什么进制输入,都以该进制的实际数值储存。”
实践:
////16进制(2进制,8进制)数转换为10进制
//方法一
//得到一个16进制数,存入字符串变量中,
string s16a = (0x120).ToString();//s16a为"288",期望为"0x120"。
string s16b = "0x120";
//使用Convert方法转换,把16进制的s转换为10进制数放入变量中
int num11 = Convert.ToInt32(s16a, );//num11值为648,不是期望的结果
int num12 = Convert.ToInt32(s16b, );//num12值为288
Console.WriteLine("num11为{0},num12为{1},转换前s16a为{2},s16b为{3}", num11, num12, s16a, s16b);
//方法二
//如果存入int变量中,会自动转换为10进制
int num2 = 0x120; //num值为288 ////10进制数转换为16进制(2进制,8进制)
int i10 = ;
string s16 = Convert.ToString(i10, );
string s8 = Convert.ToString(i10, );
string s2 = Convert.ToString(i10, );
Console.WriteLine("s16为{0},s8为{1},s2为{2},转换前i10为{3}", s16, s8, s2, i10); Console.ReadKey();