C# BCC异或校验法

2021-04-25 03:30

阅读:515

标签:check   异或   length   字符串   进制   i++   upper   data   int   

通讯协议中最后一位是校验位 

采用BCC(异或校验)法

这个怎么解释?

就是 把16进制的字符串转换成byte[]数据,依次拿出来进行异或一下 然后返回的值和校验位对比下 看看对不对

例如:

232301FE313233343536373839303132333435363701001E0F01021226270001383938363032623531333136353033393731363001009E

最后一位是9E 十进制为 158

那么我们就截取9E前面部分

232301FE313233343536373839303132333435363701001E0F0102122627000138393836303262353133313635303339373136300100

传入方法

///


/// BCC和校验代码
///

/// 需要校验的数据包
///
public byte Get_CheckXor(byte[] data)
{
byte CheckCode = 0;
int len = data.Length;
for (int i = 0; i {
CheckCode ^= data[i];
}
return CheckCode;
}

返回结果 一样是158

如果还没看懂?我们再转回16进制

 

///


/// BCC和校验代码返回16进制
///

/// 需要校验的数据包
///
public string GetBCCXorCode(byte[] data)
{
byte CheckCode = 0;
int len = data.Length;
for (int i = 0; i {
CheckCode ^= data[i];
}
return Convert.ToString(CheckCode, 16).ToUpper();
}

返回9E

学习了一个上午 搞定了 决定分享下 希望能帮助的到刚接触的同学

 

C# BCC异或校验法

标签:check   异或   length   字符串   进制   i++   upper   data   int   

原文地址:http://www.cnblogs.com/linyijia/p/7928272.html


评论


亲,登录后才可以留言!