發送方:對要資料累加,得到一個資料和,對和求反,即得到我們的校驗值,然后把要發的資料和這個校驗值一起發送給接收方,
接收方:對接收的資料(包括校驗和)進行累加,如果得到0(關于網上說這里需要加1,本人通過測驗發現,不需要累加),那么說明資料沒有出現傳輸錯誤,(注意,此處發送方和接收方用于保存累加結果的型別一定要一致,否則加1就無法實作溢位從而無法得到0,校驗就會無效)
測驗如下:
發送方:

接收方:

測驗工具鏈接:http://www.metools.info/code/c128.html
原始代碼如下:
/* 發送方測驗代碼 */
uint8_t Send_CheckSum(uint8_t *str, int str_length)
{
uint8_t CheckSum_Value = 0;
int i = 0;
for(i = 0; i < str_length; i++)
{
CheckSum_Value += str[i];
}
CheckSum_Value = ~CheckSum_Value;
return CheckSum_Value;
}
/* 接收方測驗代碼 */
uint8_t Recv_CheckSum(uint8_t *str, int str_length)
{
uint8_t CheckSum_Value = 0;
int i = 0;
for(i = 0; i < str_length; i++)
{
CheckSum_Value += str[i];
}
return CheckSum_Value;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/295027.html
標籤:其他
