Berechnen Sie die Zweierkomplement-Prüfsumme der hexadezimalen Zeichenfolge

Ich habe eine Zeichenfolge "0AAE0000463130004144430000" und muss die Zweierkomplement-Prüfsumme der hexadezimalen Bytes berechnen, aus denen die Zeichenfolge besteht.

Die Formel für die obige Beispielzeichenfolge lautet

Summiere die Werte: 0A + AE + 00 + 00 + 46 + 31 + 30 + 00 + 41 + 44 + 43 + 00 + 00 = 27 (verwerfe den Überlauf)Subtrahieren Sie das Ergebnis von 0x100 = 0xD9

D9 ist die richtige Prüfsumme für dieses Beispiel, aber ich habe Probleme, die zweistelligen Hexadezimalwerte aus der Zeichenfolge in C # zu analysieren. Mein aktueller Code ist unten:

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;

Dies summiert jedoch die ASCII-Werte, soweit ich das beurteilen kann, und zwar für jedes einzelne Zeichen.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage