Use Cardinal instead of Integer - because the C code uses "unsigned int".
Your for should be 0-based: for currByte := 0 to dataLength-1 do ^ maps to xor if ((dataStore xor accum) and $8000) > 0 then accum := (accum shl 1) xor CRCDIV; Lastly, this does not affect your code, but for correctness: for currBit := 0 to 7 do Interesting polynomial: CRCDIV = $8005; ----- Original Message ----- From: James Sugrue To: Multiple recipients of list delphi Sent: Tuesday, November 04, 2003 11:50 AM Subject: [DUG]: C Conversion I have the following code. I have tried to convert into Delphi but it isn't 100% correct. Could some kind soul show me where I've gone wrong? #define CRCDIV 0x8005 unsigned int computeCRC (unsigned char *data, unsigned int dataLength) { unsigned int accum; unsigned int currByte; unsigned int currBit; unsigned int dataStore; accum = 0; // repeat for all bytes in message from the header to the data for (currByte = 0; currByte < dataLength; currByte++) { dataStore = ((unsigned int) data[currByte]) << 8; for (currBit = 0; currBit < 8; currBit++) { if ((dataStore ^ accum) & 0x8000) { accum = (accum << 1) ^ CRCDIV; } else { accum <<= 1; } dataStore <<= 1; } } return (accum); } function computeCRC (data : PChar; dataLength : Integer) : Integer; const CRCDIV = $8005; var accum : Integer; currByte : Integer; currBit : Integer; dataStore : Integer; begin accum := 0; // repeat for all bytes in message from the header to the data for currByte := 1 to dataLength do begin dataStore := Integer(data[currByte]) shl 8; for currBit := 1 to 8 do begin if ((dataStore or accum) and $8000) > 0 then begin accum := (accum shl 1) or CRCDIV; end else begin accum := accum shl 1; end; dataStore := dataStore shl 1; end; end; result := accum; end; James Sugrue Software Developer WA Systems Timaru Phone 03 688-1131 --------------------------------------------------------------------------- New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED] Website: http://www.delphi.org.nz To UnSub, send email to: [EMAIL PROTECTED] with body of "unsubscribe delphi" Web Archive at: http://www.mail-archive.com/delphi%40delphi.org.nz/