public static byte[] ToModbus(byte[] byteData)
{
byte[] CRC = new byte[2];
UInt16 wCrc = 0xFFFF;
for (int i = 0; i < byteData.Length; i++)
{
wCrc ^= Convert.ToUInt16(byteData[i]);
for (int j = 0; j < 8; j++)
{
if ((wCrc & 0x0001) == 1)
{
wCrc >>= 1;
wCrc ^= 0xA001;//异或多项式
}
else
{
wCrc >>= 1;
}
}
}
CRC[1] = (byte)((wCrc & 0xFF00) >> 8);//高位在后
CRC[0] = (byte)(wCrc & 0x00FF); //低位在前
return CRC;
}
测试.
byte[] k =

该代码实现了一个用于Modbus协议的CRC校验函数。它接收一个字节数组作为输入,通过异或和位移操作计算CRC值,并将结果存储在返回的字节数组中。测试案例展示了如何使用该函数并输出16进制的CRC值。
最低0.47元/天 解锁文章
1404

被折叠的 条评论
为什么被折叠?



