一段代码思考两天了,看不明白,谢谢大家!
一段代码思考两天了,看不明白,谢谢大家!
namespace ASCII
{
     public partial class Frm_Main : Form
     {
         public Frm_Main()
         {
             InitializeComponent();
         }
         private void btn_ToASCII_Click(object sender, EventArgs e)
         {
             Encoding unicode = Encoding.Unicode;
             if (txt_char.Text != string.Empty)//判断输入是否为空
             {
                 if (unicode.//判断输入是否为字母
                    GetBytes(new char[] { txt_char.Text[0] })[1] == 0)                {
                     txt_ASCII.Text = Encoding.GetEncoding(//得到字符的ASCII码值
                         "unicode").GetBytes(txt_char.Text)[0].ToString();
                 }
                 else
                 {
                     txt_ASCII.Text = string.Empty;//输出空字符串
                     MessageBox.Show("请输入字母!","提示!");//提示用户信息
                 }
             }
         }
其中红色的判断是否输入字母为什么用的是等于“==”啊?
其二,GetBytes(new char[] { txt_char.Text[0] })[1],这个里边最后的[1],具体指代的是什么?是第2个字节还是第一个啊?
------解决方案--------------------=是赋值操作,==才是比较的操作,[1]就是第二个字节
------解决方案--------------------
------解决方案--------------------意思是假如第二个字符等于0的时候,控件的值获取第一个字符的值!
------解决方案--------------------你这个根本就判断不了是不是字母呀,字母一个字节,汉字等两个字节,一个字节用Unicode编码时占用两个字节,第二个字节为0,你的判断只做到了这一步,不知道干什么用的
Encoding.GetEncoding(//得到字符的ASCII码值
 "unicode").GetBytes(txt_char.Text)[0].ToString();
就是得到了第一个字节的数据,也就是ascii码
------解决方案--------------------if (unicode.//判断输入是否为字母
GetBytes(new char[] { txt_char.Text[0] })[1] == 0) 
new char[] { txt_char.Text[0] }是字符数组GetBytes(new char[] { txt_char.Text[0] })是把字符转换成字节数组,为满足语言种类的多样,Unicode字符是用两个字节编码,字母数字等字符还是沿用原先的编码,只是从一个字节变成了两个字节,原只占一个字节的字符在Unicode编码中只占用第一个字节,第2个字节为0。所以GetBytes(new char[] { txt_char.Text[0] })[1]是取第二个字节中的编码