如何计算校验和?

时间:2012-06-11 04:16:48

标签: checksum

我正在开发仪器驱动程序,我想知道如何计算帧的校验和。

说明:

  

由字符[0-9]和[A-F]表示。

     

从[STX]之后的字符开始直到[ETB]或[ETX](包括[ETB]或[ETX])的字符以二进制形式添加。

     

2位数字代表十六进制代码中最不重要的8位,将转换为ASCII字符[0-9]和[A-F]。

     

最高位数存储在CHK1中,最低位数存储在CHK2中。

这是示例框架:

<STX>2Q|1|2^1||||20011001153000<CR><ETX><CHK1><CHK2><CR><LF>

我想知道chk1和chk2的值是什么,我是新的,所以我对如何计算校验和完全空白

我没有超过第3和第4点。

任何人都可以提供c#的示例代码。

请帮帮我。

2 个答案:

答案 0 :(得分:1)

用0xff掩码和并转换为两个十六进制数字。

答案 1 :(得分:1)

最后我得到了答案。

听到计算校验和的c#代码。

private string CalculateChecksum(string dataToCalculate)
{
    byte[] byteToCalculate = Encoding.ASCII.GetBytes(dataToCalculate);

    int checksum = 0;

    foreach (byte chData in byteToCalculate)
    {
        checksum += chData;
    }

    checksum &= 0xff;

    return checksum.ToString("X2");
}