一段代码思考两天了,看不明白,谢谢大家!
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个字节还是第一个啊?
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个字节还是第一个啊?
Encoding.GetEncoding(//得到字符的ASCII码值
"unicode").GetBytes(txt_char.Text)[0].ToString();
就是得到了第一个字节的数据,也就是ascii码
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]是取第二个字节中的编码
不知道unicode编码在第二个字节默认为0
这下明白了
还是csdn好