日期:2014-05-17  浏览次数:20809 次

一段代码思考两天了,看不明白,谢谢大家!
一段代码思考两天了,看不明白,谢谢大家!
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]就是第二个字节
------解决方案--------------------
探讨
=是赋值操作,==才是比较的操作,[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]是取第二个字节中的编码