如何计算校验和

时间:2012-06-08 11:10:55

标签: c# checksum

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

说明:

  
      
  1. 以字符[0-9]和[A-F]表示。

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

  4.   
  5. 2位数字,代表最低8位   十六进制代码,转换为ASCII字符[0-9]和[A-F]。

  6.   
  7. 最重要的数字存储在CHK1中,最不重要的数字   CHK2中的数字。

  8.   

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

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

请帮帮我。

3 个答案:

答案 0 :(得分:17)

最后我得到了答案,这是计算校验和的代码:

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");
}

答案 1 :(得分:0)

您可以在一行中完成此操作:

return Encoding.ASCII.GetBytes(dataToCalculate).Aggregate((r, n) => r += n).ToString("X2");

答案 2 :(得分:-3)

private bool CheckChecksum(string data)
{
   bool isValid =false

   byte[] byteToCalculate = Encoding.ASCII.GetBytes(dataToCalculate);
   int checkSum = 0;
   for ( int i=i i<byteToCalculate.Length;i++)
   {
      checkSum += byteToCalculate[i];
   }
   checksum &= 0xff;

  if (checksum == byteToCalculate[ChecksumPlace]
  {
   return true
  }
  else
  {
  return  false
  }
}
相关问题