当前位置:   article > 正文

C#_串口调试助手-16进制和计算_c# 累加和(16进制,多字节)

c# 累加和(16进制,多字节)

16进制和计算,输入数据必须时0x00-0xff 之间的数据,不可以输入除了0-9 a-f A-F外的任何内容包括回车和换行,并且此功能脱离串口存在,打开软件即可使用。

存在空格和不存在空格都是同样计算

 

如果是奇数个数据,默认最后一个数据前面添加零

实现思路是:字符串格式读取TextBox中的数据,全部转换为大写,判断是否为奇数个数据,for循环转换并累加数据,显示十进制结果和十六进制结果 

  1. private void button15_Click(object sender, EventArgs e)
  2. {
  3. string Data_String = textBox13.Text.Replace(" ", ""); //获取字符串并去除空格
  4. Data_String = Data_String.ToUpper(); //将所有数据转换为大写
  5. if (Data_String.Length % 2 != 0) //判断长度是否为偶数
  6. {
  7. Data_String = Data_String.Insert(Data_String.Length - 1, "0"); //不为偶数,将倒数第二位添加一个'0'
  8. }
  9. int Data_Sum = 0; //累加保存值
  10. int h = 0, l = 0; //高低位的数据
  11. for (int i = 0; i < Data_String.Length / 2; i++) //循环
  12. {
  13. if (Data_String[i * 2] >= 48 && Data_String[i * 2] <= 57) { h = (Data_String[i * 2] - 48) * 16; }
  14. else if (Data_String[i * 2] >= 65 && Data_String[i * 2] <= 70) { h = (Data_String[i * 2] - 55) * 16; }
  15. else { Data_Sum = -100; break; }
  16. if (Data_String[(i * 2) + 1] >= 48 && Data_String[(i * 2) + 1] <= 57) { l = (Data_String[(i * 2) + 1] - 48); }
  17. else if (Data_String[(i * 2) + 1] >= 65 && Data_String[(i * 2) + 1] <= 70) { l = (Data_String[(i * 2) + 1] - 55); }
  18. else { Data_Sum = -100; break; }
  19. Data_Sum += (h + l); //累加
  20. }
  21. if (Data_Sum >= 0)
  22. {
  23. textBox14.Text = "DEC:" + Data_Sum.ToString() + "\r\nHEX:" + System.Convert.ToString(Data_Sum, 16); //显示结果
  24. }
  25. else
  26. {
  27. textBox13.Text = "";
  28. textBox14.Text = "";
  29. MessageBox.Show("请输入 0-9 a-f A-F 内的数据", "ERROR");
  30. }
  31. }

个人见解,感谢阅读。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/488605
推荐阅读
相关标签
  

闽ICP备14008679号