C#.net语句理解
int intAB = 0x16; s1 = intAB.ToString(); //16进制转对应ASCII字符: byte babb = 0x45; string ass = ((char)babb).ToString(); 该如何理解((char)babb).ToString()这句,请详细解释,尤其是char的作用,还有两个括号
int intAB = 0x16; s1 = intAB.ToString(); //16进制转对应ASCII字符: byte babb = 0x45; string ass = ((char)babb).ToString(); 该如何理解((char)babb).ToString()这句,请详细解释,尤其是char的作用,还有两个括号
答案:string ass = ((char)babb).ToString(); 理解: 先将字节类型变量babb中的数据转换为Unicode字符,然后再将此Unicode字符转换为字符串,并赋值到字符串类型变量ass中。 括号:第一个括号是char的标准语法,第二个括号,是为了运算过程的正确性,加的保险。 char 的作用参考http://technet.microsoft.com/zh-cn/sysinternals/x9h8tsay(zh-tw).aspx
其他:((char)babb).ToString() 先把byte类型转化为char类型,然后把char类型转化为string类型。 (char)代表显示转换,就是吧你的变量babb转换为char类型的字符
一般转换类型有两种方法,除了.ToString()
(char)babb 一种
Convert.ToChar(babb) 一种
两个都属于类型转换 0x45表示ASCII码,对应字符-
(char)babb表示把0x45转换为这个字符-
然后把这个字符转换为字符串赋值给ass (char)babb表示字母E,((char)babb).ToString()表示把字母E转换成string格式,这样子就可以显示在label等控件中了,否则是不能直接赋值在label中的。 C#里 char是2个字节的
而byte是一个字节的 你可以把byte 看做是一个字节的 unsigned char类型
如果用((byte)babb).ToString() 会将babb的0x45 转成十进制整数69
你用char强转的目的就是将整数69 变成ASCII码显示 字符‘E’
(char)babb是强转 byte到char类型
再括号 就是 babb已经变成char类型 使用char类型的ToString()方法
(byte)babb.ToString() 如果不加最外层括号 编译器会认为babb先使用.ToString()方法 (这个是byte类型的方法)返回string类型在强转(char)类型
编译器会报 “无法将string类型转换为char类型的错误”
所以括号是必须的 代表着优先级不一样 点运算符优先级高于 强制转换 所以必须加括号
上一个:C#操作excel,现在excel里面有多个sheet,如何能指定保存在某个sheet里面!
下一个:C#中的构造函数、方法重载以及继承与多态详细讲解