Попытка выяснить, как проверить контрольную сумму - PullRequest
1 голос
/ 19 мая 2010

Я пытаюсь выяснить, как проверить контрольную сумму. Мое сообщение выглядит так:

38 0A 01 12 78 96 FE 00 F0 FB D0 FE F6

F6 - контрольная сумма. Я преобразую предыдущие 12 наборов в двоичный файл, а затем добавляю их вместе. Затем попробуйте выполнить побитовую операцию, чтобы применить дополнение 2s. Я получаю значение -1562, но я не могу преобразовать его обратно в шестнадцатеричное, чтобы проверить правильность значения. Может ли кто-нибудь указать мне правильное направление?

мой код:

string[] hexValue = {"38", "0A", "01", "12", "78", "96", "FE", "00", "F0", "FB", "D0", "FE"};
int totalValue = 0;
foreach(string item in hexValue)
{
    totalValue += Int32.Parse(item, NumberStyles.HexNumber);
}

int bAfter2sC = ~totalValue + 1;
Console.Write("answer :" + bAfter2sC + "\n");

Ответы [ 2 ]

2 голосов
/ 19 мая 2010

Покрытие в гекс доступно с помощью ToString: bAfter2sC.ToString("X8")

1 голос
/ 19 мая 2010

Я не уверен, какой алгоритм вы используете (-1562 требует 3 байта, а не два), но как насчет использования стандартного алгоритма проверки цифр, такого как мод 11, также известного как ISDN 10, как описано здесь : «это можно проверить очень просто, сложив все продукты вместе, затем разделив на 11».

...