本文主要是介绍异或校验和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;
}
仅供大家参考,需要大家根据实际情况,再做修改。
这篇关于异或校验和CRC16 校验源码分享的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!