首页 > Windows开发 > 详细

C# BCC异或校验法

时间:2017-11-30 12:51:00      阅读:254      评论:0      收藏:0      [点我收藏+]

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

采用BCC(异或校验)法

这个怎么解释?

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

例如:

232301FE313233343536373839303132333435363701001E0F01021226270001383938363032623531333136353033393731363001009E

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

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

232301FE313233343536373839303132333435363701001E0F0102122627000138393836303262353133313635303339373136300100

传入方法

/// <summary>
/// BCC和校验代码
/// </summary>
/// <param name="data">需要校验的数据包</param>
/// <returns></returns>
public byte Get_CheckXor(byte[] data)
{
byte CheckCode = 0;
int len = data.Length;
for (int i = 0; i < len; i++)
{
CheckCode ^= data[i];
}
return CheckCode;
}

返回结果 一样是158

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

 

/// <summary>
/// BCC和校验代码返回16进制
/// </summary>
/// <param name="data">需要校验的数据包</param>
/// <returns></returns>
public string GetBCCXorCode(byte[] data)
{
byte CheckCode = 0;
int len = data.Length;
for (int i = 0; i < len; i++)
{
CheckCode ^= data[i];
}
return Convert.ToString(CheckCode, 16).ToUpper();
}

返回9E

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

 

C# BCC异或校验法

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!