檢查字節數組中數據是否正確的最佳方法是什麼?檢查字節數組時出錯
我通過串行連接發送字節數組,例如,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
}
有沒有更好的但簡單的錯誤檢查算法?
校驗和可能比沒有測試好,但是CRC要好得多。一個簡單的總和不會檢測交換的字節,但CRC會。 – sawdust 2013-03-20 22:52:53