一段代码思考两天了,看不明白,谢谢大家!
一段代码思考两天了,看不明白,谢谢大家!
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]是取第二个字节中的编码