1. 程式人生 > >C# BCC異或校驗法

C# BCC異或校驗法

依次 [] get 字符 per length family byte[] font

通訊協議中最後一位是校驗位

采用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異或校驗法