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?

