0

バイト配列のデータが正しいかどうかを確認する最良の方法は何ですか?

シリアル接続を介してバイト配列(byte1、byte2、byte3、byte4、errorCheckByteなど)を送信していますが、データを受信したときにデータが正しいことを確認したいと思います。

接続の両端で同じであると判断するために最初の4バイトで実行するのに最適な数学演算は何ですか?それらをすべて一緒に追加する必要がありますか?

たとえば、実際には言語固有の例を探しているわけではありませんが、これはJavaとArduinoに関連しています。

byte byte1 = 5;
byte byte2 = 10;
byte byte3 = 34;
byte byte4 = 122;

byte errorCheckByte = createErrorByte(byte1, byte2, byte3, byte4);

byte myArray[] = {byte1, byte2, byte3, byte4, errorCheckByte}

byte createErrorByte(byte byte1,byte byte2, byte byte3, byte byte4)
{return (byte1 + byte2 + byte3 + byte4);}

送信後、おそらく次を使用して確認できますか?

// Sum bytes received
byte sumBytes = 0;
for (int x = 0; x < 3 ; x++) {sumBytes += myArray[x]}

if (myArray[4] == sumBytes) { // Print message received}
else {
    // Discard data
}

より良い、しかし単純なエラーチェックアルゴリズムはありますか?

4

1 に答える 1

2

あなたが探しているのは、ハッシュ/チェックサムの概念です。少量のデータの場合、CRC方式 (CRC32 など) が一般的に選択されます。

于 2013-03-20T16:20:23.267 に答える