Вычислить контрольную сумму дополнения двух шестнадцатеричной строки

У меня есть строка0AAE0000463130004144430000" и мне нужно рассчитать дваs дополняет контрольную сумму шестнадцатеричных байтов, составляющих строку.

Формула для примера строки выше

Суммируйте значения: 0A + AE + 00 + 00 + 46 + 31 + 30 + 00 + 41 + 44 + 43 + 00 + 00 = 27 (откажитесь от переполнения)Вычтите результат из 0x100 = 0xD9

D9 является правильной контрольной суммой для этого примера, но у меня возникают проблемы с получением двухзначных шестнадцатеричных значений из строки в C #. Мой текущий код ниже:

string output = "0AAE0000463130004144430000";
long checksum = 0;
char[] outputBytes = output.TrimStart(':').ToCharArray();

foreach (var outputByte in outputBytes)
{
    checksum += Convert.ToInt32(outputByte);
    checksum = checksum & 0xFF;
}

checksum = 256 - checksum;

Однако, насколько я могу судить, это суммирование значений ASCII и выполнение этого для каждого отдельного символа.

Ответы на вопрос(3)

Ваш ответ на вопрос