Как вычислить сумму всех байтов в массиве (CR C) - PullRequest
1 голос
/ 02 апреля 2020

Я пытаюсь получить сумму всех байтов в массиве (CR C).

У меня есть массив 0x3A, 0x07, 0x00, 0x00, 0x80, 0x04. CR C этого массива 3A.

Или этот массив 0x3A 0x09 0x00 0x00 0x80 0x03 0x01 0x00. CR C равно = 38.

Я проверил много алгоритмов, но никто не дал мне этот результат.

Я проверил это (IEnumerable<byte> array) => (byte)(array.Sum(arr => arr) & 0xFF);

и это:

byte crc = 0;
for (var i = 0; i < data.Length; i++)
    crc = crc8Table[(crc ^ data[i]) & 0xFF];
return crc;

или это:

byte checksum = 0x00;
for (int i = 0; i < data.Length; i++)
     checksum ^= data[i];

Но ни одна попытка не дала мне истинный результат. Как мне найти алгоритм, который даст мне CR C 3A или 38 для массивов.

1 Ответ

0 голосов
/ 02 апреля 2020

Решение по моему вопросу.

byte b = 0xFF;
for (var i = 0; i < data.Length; i++)
     b -= data[i];

return b;
...