C# 校验和 CRC16 CCITT
C# Check Sum CRC16 CCITT
虽然我是按照计算校验和CRC16的方法来的。我无法得到用户手册显示的结果。有人可以帮忙吗?
private static UInt16 CRC16_Update(UInt16 crc, byte c)
{
crc = (((ushort)(((crc >> 4) & 0x0FFF) ^ crc_tab[((crc ^ c) & 0x000F)])));
crc = (((ushort)(((crc >> 4) & 0x0FFF) ^ crc_tab[((crc ^ (c >> 4)) & 0x000F)])));
return crc;
}
命令格式:
CRC 手册示例:
手动命令示例:
只需将 crc 结果初始化为 0xFFFF,而不是我预期的零。
这样:
byte[] data = new byte[] { 0x3F, 0x01, 0x00, 0x01, 0x06, 0x8C, 0x00, 0x01, 0x00, 0xCD, 0x13 };
UInt16 crc = 0xFFFF;
for (int i = 0; i < data.Length-2; i++)
{
crc = CRC16_Update(crc, data[i]);
}
虽然我是按照计算校验和CRC16的方法来的。我无法得到用户手册显示的结果。有人可以帮忙吗?
private static UInt16 CRC16_Update(UInt16 crc, byte c)
{
crc = (((ushort)(((crc >> 4) & 0x0FFF) ^ crc_tab[((crc ^ c) & 0x000F)])));
crc = (((ushort)(((crc >> 4) & 0x0FFF) ^ crc_tab[((crc ^ (c >> 4)) & 0x000F)])));
return crc;
}
命令格式:
CRC 手册示例:
手动命令示例:
只需将 crc 结果初始化为 0xFFFF,而不是我预期的零。 这样:
byte[] data = new byte[] { 0x3F, 0x01, 0x00, 0x01, 0x06, 0x8C, 0x00, 0x01, 0x00, 0xCD, 0x13 };
UInt16 crc = 0xFFFF;
for (int i = 0; i < data.Length-2; i++)
{
crc = CRC16_Update(crc, data[i]);
}