C# BCC异或校验法
2021-04-25 03:30
标签:check 异或 length 字符串 进制 i++ upper data int 通讯协议中最后一位是校验位 采用BCC(异或校验)法 这个怎么解释? 就是 把16进制的字符串转换成byte[]数据,依次拿出来进行异或一下 然后返回的值和校验位对比下 看看对不对 例如: 232301FE313233343536373839303132333435363701001E0F01021226270001383938363032623531333136353033393731363001009E 最后一位是9E 十进制为 158 那么我们就截取9E前面部分 232301FE313233343536373839303132333435363701001E0F0102122627000138393836303262353133313635303339373136300100 传入方法 /// 返回结果 一样是158 如果还没看懂?我们再转回16进制 /// 返回9E 学习了一个上午 搞定了 决定分享下 希望能帮助的到刚接触的同学 C# BCC异或校验法 标签:check 异或 length 字符串 进制 i++ upper data int 原文地址:http://www.cnblogs.com/linyijia/p/7928272.html
/// BCC和校验代码
///
/// 需要校验的数据包
///
public byte Get_CheckXor(byte[] data)
{
byte CheckCode = 0;
int len = data.Length;
for (int i = 0; i {
CheckCode ^= data[i];
}
return CheckCode;
}
/// 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();
}