编程过程中经常遇到的几种数据格式:0x32(16进制),50(十进制),‘2’(字符),“2”(字符串)
他们之间的转换刚开始会让人觉得迷茫,现在稍微总结如下:
从我们熟悉的十进制出发,50的16进制是0x32,其ASCII码是‘2’,所以他们表达的是同一个值。
在C#中数据类型的转换需要用到convert
convert.toint16()
convert.tochar()
convert.tobyte()
等等...
下面列举部分使用实例
int aint, bint;
byte abyte, bbyte;
char achar='2';
string astring = "2";
aint = abyte; //字节可以直接赋值给整型
abyte = aint; //报错,整型不能直接赋值给字节
aint = achar; //字符可以直接赋值给整型
achar = aint; //报错,整型不能直接赋值给字符
aint = Convert.ToInt16(achar); //aint值为50
bint = Convert.ToInt16(astring,16); //bint值为2
从上面可以看出,对于字符来说,convert并没有改变它的值,和aint=(int)achar; 的功能一样。
而对于字符串来说,则是将字符转换成了字面值。 “0”~“F”对应于0~15.
另外,
Convert.ToInt16(astring,16);
16是frombase,不是很清楚是什么意思。
还有为什么“A”和“a”使用上面的转换结果都是10,也就是大小写相等
其他情况如“0123”这种字符串有待讨论。