I am trying to port this code to PB. The code is used to generate 16 bit CRC code. (CRC-16, CCITT)
I am a bit puzzled by the part in the do...while loop. (Not really easy to read)
This is the c code:
Any ideas are welcome...
------------------
Regards,
Peter
I am a bit puzzled by the part in the do...while loop. (Not really easy to read)
This is the c code:
Code:
#define POLY 0x8408 unsigned short crc16(data_p, length) char *data_p; unsigned short length; { unsigned char i; unsigned int data; unsigned int crc; crc = 0xffff; if (length == 0) return (~crc); do { for (i = 0 data = (unsigned int)0xff & *data_p++; i < 8; i++, data >>= 1) { if ((crc & 0x0001) ^ (data & 0x0001)) crc = (crc >> 1) ^ POLY; else crc >>= 1; } } while (--length); crc = ~crc; data = crc; crc = (crc << 8) | (data >> 8 & 0xFF); return (crc); }
------------------
Regards,
Peter
Comment