我正在编写一个函数,该函数将从 Buffer ( ) 中提取的 32 位 CRC(前十个条目包含随机生成的数据)与在函数uint32_t lBuffer[10]
内计算的计算 CRC 进行比较。CheckCRC
谁能明白为什么它不想给出真实的结果?任何帮助将非常感激!
这是功能代码:
bool CRC32::CheckCRC(const uint32_t* plData , uint32_t lLength, uint32_t previousCrc32)
{
bool FlagPass;
uint32_t lCalcCRC,lMsgCRC;
//Msg CRC needs to be extracted first
lMsgCRC = plData[lLength-1];
//Newly calculated CRC
//lCalcCRC = calculate_CRC32(plData,lLength-1,lInitCRC);
lCalcCRC = ~previousCrc32;
unsigned char* current = (unsigned char*) plData;
while (lLength--)
{
lCalcCRC = (lCalcCRC >> 8) ^ crc_table[(lCalcCRC & 0xFF) ^ *current++];
}
lCalcCRC = ~lCalcCRC;
if (lCalcCRC == lMsgCRC)
{
FlagPass = true;
}
else
{
FlagPass = false;
}
return FlagPass;
}