使用Java计算出CRC32的数值,有参考的C代码,自己转换成Java之后一直报错
/**
* @brief: crc32计算,软件计算,查表法
* @param : *data:数据指针
* len:数据长度
* @return: 校验值
*/
uint32_t crc32_run(uint8_t *data, uint16_t len, bool rest)
{
static uint32_t crc = 0xffffffff;
if (rest == true)
{
crc = 0xffffffff;
}
for (uint32_t i = 0; i < len; i++)
{
for (uint8_t j = 0; j < 3; j++)
{
crc = (crc << 8) ^ CRC32Table[(crc >> 24) ^ 0x00];
}
crc = (crc << 8) ^ CRC32Table[(crc >> 24) ^ data[i]];
}
return crc ^ 0x0;
}
改过很多版本也不行,
public static int calc(byte[] ba, int len, Boolean cs) {
int crc = 0xffffffff;
if (cs == true)
{
crc = 0xffffffff;
}
for (int i = 0; i < len; i++)
{
for (int j = 0; j < 3; j++)
{
crc = (crc << 8) ^ crctab[(crc >> 24) ^ 0x00];
}
crc = (crc << 8) ^ crctab[(crc >> 24) ^ ba[i]];
}
return crc ^ 0x0;
}