TCP/IP通信或串口通信数据校验
来源:互联网 发布:字体设计软件 编辑:程序博客网 时间:2024/06/05 16:25
/// <summary> /// RLC校验 /// </summary> /// <param name="writeUncheck"></param> /// <returns></returns> public static string CheckSum(string writeUncheck) { char[] hexArray = new char[writeUncheck.Length]; hexArray = writeUncheck.ToCharArray(); int decNum = 0, decNumMSB = 0, decNumLSB = 0; int decByte, decByteTotal = 0; bool msb = true; for (int t = 0; t <= hexArray.GetUpperBound(0); t++) { if ((hexArray[t] >= 48) && (hexArray[t] <= 57)) decNum = (hexArray[t] - 48); else if ((hexArray[t] >= 65) & (hexArray[t] <= 70)) decNum = 10 + (hexArray[t] - 65); if (msb) { decNumMSB = decNum * 16; msb = false; } else { decNumLSB = decNum; msb = true; } if (msb) { decByte = decNumMSB + decNumLSB; decByteTotal += decByte; } } decByteTotal = (255 - decByteTotal) + 1; decByteTotal = decByteTotal & 255; int a, b = 0; string hexByte = "", hexTotal = ""; double i; for (i = 0; decByteTotal > 0; i++) { b = Convert.ToInt32(System.Math.Pow(16.0, i)); a = decByteTotal % 16; decByteTotal /= 16; if (a <= 9) hexByte = a.ToString(); else { switch (a) { case 10: hexByte = "A"; break; case 11: hexByte = "B"; break; case 12: hexByte = "C"; break; case 13: hexByte = "D"; break; case 14: hexByte = "E"; break; case 15: hexByte = "F"; break; } } hexTotal = String.Concat(hexByte, hexTotal); } return hexTotal; } /// <summary> /// RLC校验(异或 取反 加1<span style="font-family: Arial, Helvetica, sans-serif;">)</span> /// </summary> /// <param name="hexString"></param> /// <returns></returns> public static string CheckSumqy(string hexString) { hexString = hexString.Replace(" ", ""); int strLen = hexString.Length / 2; //16进制转10进制 int y = Convert.ToInt32(hexString.Substring(0, 2), 16); //异或运算 for (int i = 0; i < strLen - 1; i++) { //16进制转10进制 int x = Convert.ToInt32(hexString.Substring((i + 1) * 2, 2), 16); y ^= x; } //十进制转二进制 string fy = Convert.ToString(y, 2); //二进制取反 string fyf = ""; for (int i = 0; i < fy.Length; i++) { if (fy.Substring(i, 1) == "1") { fyf += "0"; } else { fyf += "1"; } } //二进制转换为10进制加1 int LRCx = Convert.ToInt32(fyf, 2) + 1; //10进制转换为16进制度 string LRC = Convert.ToString(LRCx, 16); return LRC; } /// <summary> /// 求和 取反 加1 /// </summary> /// <param name="hexstring"></param> /// <returns></returns> public static string CheckSumgz(string hexstring) { //压缩替换空格 hexstring = hexstring.Replace(" ", ""); int strLen = hexstring.Length / 2; //16进制转10进制 int y = Convert.ToInt32(hexstring.Substring(0, 2), 16); //求和运算 for (int i = 0; i < strLen - 1; i++) { //16进制转10进制 int x = Convert.ToInt32(hexstring.Substring((i + 1) * 2, 2), 16); y += x; } int msgint = 255 - y % 256 + 1; hexstring = Convert.ToString(msgint, 16).ToUpper(); if (hexstring.Length<2) { hexstring = "0" + hexstring; } return hexstring; }
0 0
- TCP/IP通信或串口通信数据校验
- TCP/IP通信或串口通信数据类型转换
- crc串口通信校验
- STM32串口通信校验问题
- IIC总线、SPI总线、串口232通信、422通信、485通信、TCP/IP协议
- IIC总线、SPI总线、串口232通信、422通信、485通信、TCP/IP协议
- tcp ip 通信socket
- TCP/IP通信架构
- TCP/IP通信架构
- tcp ip 通信socket
- TCP/IP 通信
- TCP/ip通信模式
- TCP/IP 通信
- Qt tcp/ip 通信
- TCP/IP通信架构
- tcp ip 通信socket
- TCP/ip通信模式
- TCP/IP通信架构
- build.gradle配置参数详解
- Android调用系统邮件类应用的正确实现方法
- python挑战之level 22
- Python数据可视化:泊松分布
- python中安装机器学习(sklearn)必要的包和模块
- TCP/IP通信或串口通信数据校验
- Centos 6.5 在线安装 Mysql 5.7.15
- UITableView一键滑到最顶部、底部
- iOS http 请求
- 如何在win764位操作系统上,如何完成C#短信模块的开发
- 使用中国CDN网络分发Unity 网页插件的方法
- Android Studio2.0 教程从入门到精通MAC版 - 入门篇
- linux中shell变量$#,$@,$*,$?,$0,$1,$2的含义解释
- Android 控件对齐方式