異或校驗和CRC16 校驗原始碼分享
我們在專案中,經常遇到上位機和裝置進行通訊的情況,很多通訊為了保證兩邊通訊不會存在錯誤,所以會引入
各種各樣的校驗。異或校驗和CRC16校驗是其中的兩種。
異或校驗程式碼如下:
//異或校驗
private string xorCheack(string str)
{
//獲取s應位元組陣列
byte[] b = Encoding.ASCII.GetBytes(str);
// xorResult 存放校驗結注意:初值首元素值
byte xorResult = b[0];
// 求xor校驗注意:XOR運算第二元素始
for (int i = 1; i < b.Length; i++)
{
xorResult ^= b[i];
}
// 運算xorResultXOR校驗結
// MessageBox.Show();
return str + xorResult.ToString("X");
}
CRC16 校驗原始碼
//crc16 校驗
private int crc16_modbus(byte[] modbusdata, int length)
{
int i, j;
int crc = 0xffff;
for (i = 0; i < length; i++)
{
crc ^= modbusdata[i];
for (j = 0; j < 8; j++)
{
if ((crc & 0x01) == 1)
{
crc = (crc >> 1) ^ 0xa001;
}
else
{
crc >>= 1;
}
}
}
return crc;
}
僅供大家參考,需要大家根據實際情況,再做修改。