C#:
void CalculateCRC32(byte[] rawData, int offset, int crcLastIndex, ref uint crc) { try { crc = 0xFFFFFFFF; //Calculating the CRC 32 for (int i = 0; i < crcLastIndex; i++) { crc = (crc >> 8) ^ crc32Table[(crc & 0xFF) ^ rawData[i + offset]]; } crc ^= 0xFFFFFFFF; } catch { crc = 0xFFFFFFFF; } } byte[] buffer = new byte[] { 0, 1, 2, 3 }; uint crc = 0; CalculateCRC32(buffer, 0, 4, ref crc);
Monkey C:
function calculateCRC32(rawData, offset, crcLastIndex) { var bytes = [0xFF, 0xFF, 0xFF, 0xFF]b; var options = {}; var crc = bytes.decodeNumber(Lang.NUMBER_FORMAT_UINT32, options); //Calculating the CRC 32 for (var i = 0; i < crcLastIndex; i++) { crc = (crc >> 8) ^ crc32Table[((crc & 0xFF) ^ rawData[i + offset]).toNumber()]; } crc ^= bytes.decodeNumber(Lang.NUMBER_FORMAT_UINT32, options); return crc; } var array = [0, 1, 2, 3]; calculateCRC32(array, 0, 4);
I'm getting 2336654867 in Monkey C, and a value of 2344191507 in C#. Why is this?