0

检查字节数组中的数据是否正确的最佳方法是什么?

我正在通过串行连接发送一个字节数组,例如 byte1、byte2、byte3、byte4 和 errorCheckByte,我想在收到数据时检查数据是否正确。

对前四个字节执行以确定它们在连接两端是否相同的最佳数学运算是什么?我应该把它们加在一起吗?

例如,但实际上并不是在寻找特定于语言的示例,但这与 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

您正在寻找的是hashing/checksumming的概念。对于少量数据,CRC方法是常见的选择,例如CRC32。

于 2013-03-20T16:20:23.267 回答