Perl - дополнение 2 по модулю 256 - эквивалент C ++ - PullRequest
2 голосов
/ 05 декабря 2011

Я работаю со скриптом Perl для отправки значений с USB на Arduino. Часть сценария - проверка контрольной суммы на ошибку значений в протоколе.

Теперь я хотел бы отправить данные из одного Arduino в другой, поэтому мне нужно написать эквивалентную строку в C ++.

$checksum = ((($val1 + $val2 + $val3 + $val4 + $val5)^255 )+1) & 255;

2 является дополнением к сумме значений от 1 до 5 по модулю 256.

Как я мог написать это на C ++ для Arduino?

Ответы [ 2 ]

6 голосов
/ 05 декабря 2011

Просто избавьтесь от долларов:

checksum = (((val1 + val2 + val3 + val4 + val5)^255 )+1) & 255;
5 голосов
/ 05 декабря 2011

Это было бы почти так же в C ++:

checksum = (((val1 + val2 + val3 + val4 + val5) ^ 255) + 1) & 255;

хотя вы можете выразить это более просто:

checksum = -(val1 + val2 + val3 + val4 + val5) & 255;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...