Im записывает функцию, которая сравнивает 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;
}
'return lCalcCRC == lMsgCRC;' – Roddy