[an error occurred while processing this directive]
|
Вот есть расчёт CRC по такому исходнику (у компилятора _старший_ байт впереди)
{
uint i;
wCRC = 0;
while (wSize-- > 0)
{
wCRC ^= *(pbData++) << 8;
for (i=0; i<8; i++)
{
wCRC <<= 1;
if (CY == 1)
wCRC ^= 0x1021;
}
}
}
И рассчитывается CRC как положено, по длине массива результат золжен быть равен 0
Но если кто-то (не я) компилирует этот исходник в случае, если _младший_ байт распологается впереди, то результат будет, вероятно, совсем другой, т.е. неправильный
Конечно, если проверять результат на равенство 0, то ты сразу обнаружишь ошибку. А вот если ты подсчитываешь CRC по длине массива - 2 и сравниваешь результат с оставшимися двумя байтами ?
Вопрос: в приборе стороннего производителя поменялось расположение байт, а исходник остался преждний. И вот как мне теперь подсчитать CRC в пераом и втором случае ?
E-mail: info@telesys.ru