计算机中数据实体和数据表示形式(以C#为例)

摘自网络的一段话:

    “在程序代码中,可以用多种方式表示数据,十进制、十六进制、八进制都是常用的表示方式,但计算机内部永远就只使用二进制,与你写程序时用什么无关。你说要定义数组int a[10],其中涉及具体数据表示的就只有十进制数10,但这个数值你完全可以用十六进制表示,写int a[0x0A],最终结果都是一样的,数组a都是(十进制)10个元素。至于如果你说数组a中要储存十六进制数据,那也是跟这个完全一样,计算机内部就只认识那些二进制数,呈现出来人眼要观察那些数据,是你希望它以什么进制显示出来给你看而已,你希望看十进制,就命令它用十进制显示,希望看十六进制,就命令它用十六进制显示,无论显示的是什么进制,数值本身永远是一样的,输入时,也不管你用什么进制输入,都以该进制的实际数值储存。”

实践:

 1    ////16进制(2进制,8进制)数转换为10进制
 2             //方法一
 3             //得到一个16进制数,存入字符串变量中,
 4             string s16a = (0x120).ToString();//s16a为"288",期望为"0x120"。
 5             string s16b = "0x120";
 6             //使用Convert方法转换,把16进制的s转换为10进制数放入变量中
 7             int num11 = Convert.ToInt32(s16a, 16);//num11值为648,不是期望的结果
 8             int num12 = Convert.ToInt32(s16b, 16);//num12值为288
 9             Console.WriteLine("num11为{0},num12为{1},转换前s16a为{2},s16b为{3}", num11, num12, s16a, s16b);
10             //方法二
11             //如果存入int变量中,会自动转换为10进制
12             int num2 = 0x120; //num值为288
13 
14             ////10进制数转换为16进制(2进制,8进制)
15             int i10 = 138;
16             string s16 = Convert.ToString(i10, 16);
17             string s8 = Convert.ToString(i10, 8);
18             string s2 = Convert.ToString(i10, 2);
19             Console.WriteLine("s16为{0},s8为{1},s2为{2},转换前i10为{3}", s16, s8, s2, i10);
20 
21             Console.ReadKey();
原文地址:https://www.cnblogs.com/net515/p/3302221.html