CRC_IBM

uint16_t calculatecrc(void)
{
	uint16_t crc = 0, i;
	for (i = 0; i < sizeof(data) / sizeof(data[0]); i++)
	{
		crc = crc16_update(crc, data[i]);
	}
	return crc; //returns checksum over all elements
}

uint16_t crc16_update(uint16_t crc, uint8_t a)
{
	int i;
	crc ^= a;
	for (i = 0; i < 8; ++i)
	{
		if (crc & 1)
			crc = (crc >> 1) ^ 0xA001;
		else
			crc = (crc >> 1);
	}
	return crc;
}

猜你喜欢

转载自blog.csdn.net/zxl2712028/article/details/80263080
CRC