Подтвердить что ты не робот

Как рассчитать контрольную сумму

Я разрабатываю драйвер инструмента, и я хочу знать, как вычислить контрольную сумму кадра.

Объяснение:

  • Выражается символами [0-9] и [A-F].

  • Символы, начинающиеся с символа после [STX] и до [ETB] или [ETX] (включая [ETB] или [ETX]) добавляются в двоичном формате.

  • 2-значные числа, которые представляют наименее значимые 8 бит в шестнадцатеричный код, преобразуются в символы ASCII [0-9] и [A-F].

  • Самая значимая цифра хранится в CHK1 и наименее значимая в CHK2.

Я не получаю выше третьей и четвертой точек.

может ли кто-нибудь предоставить пример кода для С#.

Пожалуйста, помогите мне.

4b9b3361

Ответ 1

Наконец, я получил ответ, вот код для вычисления контрольной суммы:

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

Ответ 2

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
  }
}