做产品尤其是 IoT 时代的产品,不可避免会涉及到数据跨板传输,数据的准确与稳定就显得尤为重要了。
1、计算校验和:
// 计算数据校验和
uint8 CheckSum8_Calculate( uint8* pBuffer, uint32 bufSize )
{
uint8 cksum = 0;
// 对数据区数据进行累加
while ( bufSize > 0 )
{
cksum += *pBuffer;
pBuffer++;;
bufSize--;
}
// 将校验和取反加 1 后返回
return ((~cksum)+1);
}
2、检查数据校验
// 验证校验数据
uint8 CheckSum8_Verify( uint8* pData, uint32 dataSize, uint8 ckSum )
{
uint8 pCkSum = ckSum;
for( uint8 i = 0; i < dataSize; i++ )
{
pCkSum += *pData;
pData++;
}
// 检测校验数据成功
if ( pCkSum == 0 )
{
return 0;
}
else
{
return -1;
}
}