赞
踩
16进制和计算,输入数据必须时0x00-0xff 之间的数据,不可以输入除了0-9 a-f A-F外的任何内容包括回车和换行,并且此功能脱离串口存在,打开软件即可使用。
存在空格和不存在空格都是同样计算
如果是奇数个数据,默认最后一个数据前面添加零
实现思路是:字符串格式读取TextBox中的数据,全部转换为大写,判断是否为奇数个数据,for循环转换并累加数据,显示十进制结果和十六进制结果
- private void button15_Click(object sender, EventArgs e)
- {
- string Data_String = textBox13.Text.Replace(" ", ""); //获取字符串并去除空格
- Data_String = Data_String.ToUpper(); //将所有数据转换为大写
- if (Data_String.Length % 2 != 0) //判断长度是否为偶数
- {
- Data_String = Data_String.Insert(Data_String.Length - 1, "0"); //不为偶数,将倒数第二位添加一个'0'
- }
-
- int Data_Sum = 0; //累加保存值
- int h = 0, l = 0; //高低位的数据
- for (int i = 0; i < Data_String.Length / 2; i++) //循环
- {
- if (Data_String[i * 2] >= 48 && Data_String[i * 2] <= 57) { h = (Data_String[i * 2] - 48) * 16; }
- else if (Data_String[i * 2] >= 65 && Data_String[i * 2] <= 70) { h = (Data_String[i * 2] - 55) * 16; }
- else { Data_Sum = -100; break; }
- if (Data_String[(i * 2) + 1] >= 48 && Data_String[(i * 2) + 1] <= 57) { l = (Data_String[(i * 2) + 1] - 48); }
- else if (Data_String[(i * 2) + 1] >= 65 && Data_String[(i * 2) + 1] <= 70) { l = (Data_String[(i * 2) + 1] - 55); }
- else { Data_Sum = -100; break; }
- Data_Sum += (h + l); //累加
- }
- if (Data_Sum >= 0)
- {
- textBox14.Text = "DEC:" + Data_Sum.ToString() + "\r\nHEX:" + System.Convert.ToString(Data_Sum, 16); //显示结果
- }
- else
- {
- textBox13.Text = "";
- textBox14.Text = "";
- MessageBox.Show("请输入 0-9 a-f A-F 内的数据", "ERROR");
- }
- }
个人见解,感谢阅读。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。