2011-12-05 10 views
2

私は、USBからArduinoに値を送るPerlスクリプトを使っています。スクリプトの一部は、プロトコルの値のチェックサムからエラーへのチェックです。Perl - 256の補数の2の補数 - C++の等価物

私は現在、Arduinoから別のArduinoにデータを送信したいので、C++で同等の行を書く必要があります。

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

それは私がArduinoのためにC++でこれを書くことができますどのような値の和の2の補数1〜5モジュロ256

のですか?

答えて

6

はただ、ドルを取り除く:

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

+1は、すべての悪の根源です! –

5

それはC++でほとんど同じになります:

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

あなたがより簡単としてこれを表現できるものの:

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