一段代码思考两天了,看不明白,谢谢大家!
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.   

    你这个根本就判断不了是不是字母呀,字母一个字节,汉字等两个字节,一个字节用Unicode编码时占用两个字节,第二个字节为0,你的判断只做到了这一步,不知道干什么用的
    Encoding.GetEncoding(//得到字符的ASCII码值
      "unicode").GetBytes(txt_char.Text)[0].ToString();
    就是得到了第一个字节的数据,也就是ascii码
      

  2.   

    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]是取第二个字节中的编码
      

  3.   

    非常感谢大家
    不知道unicode编码在第二个字节默认为0
    这下明白了
    还是csdn好