Как рассчитать контрольную сумму
Я разрабатываю драйвер инструмента, и я хочу знать, как вычислить контрольную сумму кадра.
Объяснение:
-
Выражается символами [0-9] и [A-F].
-
Символы, начинающиеся с символа после [STX] и до [ETB] или [ETX] (включая [ETB] или [ETX]) добавляются в двоичном формате.
-
2-значные числа, которые представляют наименее значимые 8 бит в шестнадцатеричный код, преобразуются в символы ASCII [0-9] и [A-F].
-
Самая значимая цифра хранится в CHK1 и наименее значимая в CHK2.
Я не получаю выше третьей и четвертой точек.
может ли кто-нибудь предоставить пример кода для С#.
Пожалуйста, помогите мне.
Ответы
Ответ 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
}
}