因為compile時,unsigned char,int間轉換很麻煩,所以就擅自把不重要的部分
static int CRC16(char *puchMsg, int usDataLen)
{
unsigned char uchCRCHi = 0xFF; // high byte of CRC initialized
unsigned char uchCRCLo = 0xFF; // low byte of CRC initialized
unsigned char uIndex; // will index into CRC lookup table
while (usDataLen--) { // pass through message buffer
uIndex = uchCRCHi ^ *puchMsg++; // calculate the CRC
uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex];
uchCRCLo = auchCRCLo[uIndex];
}
return (uchCRCHi << 8 | uchCRCLo);
}
改為int,其他也還好,但是uIndex,本以為只不過是個index,應該沒關係,結果改了造成algorithm全錯。
仔細看:uIndex也是由查表來的喔。所以....
沒有留言:
張貼留言