为什么
int number =2;
char i = (char)('0' +(char)(number % 10) );
s= i.ToString();Response.Write(s);
和
char i = (char)('0' +'2');
s= i.ToString();
Response.Write(s);
输出结果不一样呢?
int number =2;
char i = (char)('0' +(char)(number % 10) );
s= i.ToString();Response.Write(s);
和
char i = (char)('0' +'2');
s= i.ToString();
Response.Write(s);
输出结果不一样呢?
是数值为2的char
'2'
是数值为50的字符,
不说别的,先上图!看了图应该知道为什么了吗?还要解释吗?真的不要解释吗?真的要解释吗?难道还要解释吗?
哥不说,你懂的......
程序源码:using System;
using System.Text;
class Class1
{
static void Main()
{
int number = 2;
char i = (char)('0' + (char)(number % 10));
Console.WriteLine("(number % 10)数据类型:" + (number % 10).GetType() + " ;值是:" + (number % 10));
Console.WriteLine("(char)(number%10)的数据类型:" + ((char)(number % 10)).GetType() + " ;值是:" + (char)(number % 10));
Console.WriteLine("'0' + (char)(number % 10)的数据类型是:" + ('0' + (char)(number % 10)).GetType() + " ;值是:" + ('0' + (char)(number % 10)));
Console.WriteLine("(char)('0' + (char)(number % 10))的数据类型是:" + ((char)('0' + (char)(number % 10))).GetType() + " ;值是:" + (char)('0' + (char)(number % 10)));
Console.WriteLine("第一个题目结果是:"+i);
Console.WriteLine("第一个问题回答完毕!\n\n\n开始第二个问题\n\n");
char i2 = (char)('0' + '2');
Console.WriteLine("'0'+'2'的数据类型是:"+('0'+'2').GetType()+" ;值是:"+('0'+'2'));
Console.WriteLine("看出问题来了吗?值是98,对应ASCII表的小写字母b");
Console.WriteLine("第二个题目结果是:"+i2);
}
}
看一下字符2对应的ASCII值是多少?不用解释了吧
哦我知道了,你其实是不太理解C#的char类型。在C#中,char类型用于声明unicode字符,C#用2个字节来表示一个Unicode字符。
你将2强制转换为char类型的,查一下ASCII表,即可知道其对应的值是50。
如果你学过 C,你就会清楚,我们只需要将英文字符型数据强制转换成合适的数值型数据,就可以得到相应的 ASCII 码;反之,如果将一个合适的数值型数据强制转换成字符型数据,就可以得到相应的字符。
C# 中字符的范围扩大了,不仅包含了单字节字符,也可以包含双字节字符,如中文字符等。而在字符和编码之间的转换,则仍延用了 C 语言的做法――强制转换。不妨看看下面的例子private void TestChar() {
char ch = 'a'; short ii = 65;
this.textBox1.Text = "";
this.textBox1.AppendText("The ASCII code of \'" + ch + "\' is: " + (short) ch + "\n");
this.textBox1.AppendText("ASCII is " + ii.ToString() + ", the char is: " + (char) ii + "\n");
char cn = '中'; short uc = 22478;
this.textBox1.AppendText("The Unicode of \'" + cn + "\' is: " + (short) cn + "\n");
this.textBox1.AppendText("Unicode is " + uc.ToString() + ", the char is: " + (char) uc + "\n");
}
它的运行结果是The ASCII code of 'a' is: 97
ASCII is 65, the char is: A
The Unicode of '中' is: 20013
Unicode is 22478, the char is: 城 从这个例子中,我们便能非常清楚的了解――通过强制转换,可以得以字符的编码,或者得到编码表示的字符。