All pastes #212707 Raw Edit

Untitled

public text v1 · immutable
#212707 ·published 2006-10-21 00:43 UTC
rendered paste body
uchar calculateNextShiftRegister(uchar message, uchar shiftRegister) {
	for (int b = 0; b < 8; b++, message >>= 1) {
		uchar messageXor0 = (message & 1) ^ (shiftRegister & 1);
		uchar nextShiftRegister =
			(messageXor0 << 7) |  // next bit 7
			(((shiftRegister >> 7) & 1) << 6) |  // next bit 6
			((((shiftRegister >> 6) & 1) ^ messageXor0) << 5) |  // next bit 5
			((((shiftRegister >> 5) & 1) ^ messageXor0) << 4) |  // next bit 4
			((((shiftRegister >> 4) & 1) ^ messageXor0) << 3) |  // next bit 3
			(((shiftRegister >> 3) & 1) << 2) |  // next bit 2
			(((shiftRegister >> 2) & 1) << 1) |  // next bit 1
			((shiftRegister >> 1) & 1);  // next bit 0
		shiftRegister = nextShiftRegister;
	}
	return shiftRegister;
}

uchar calculateCRC(uchar* data) {
	uchar shiftRegister = 0xff;
	for (int i = 0; i < 23; i++) {
		shiftRegister = calculateNextShiftRegister(data[i], shiftRegister);
	}
	return shiftRegister;
}