level 1
秃然的程序猿🌌
楼主
附三:CRC 校验函数
Little-Endian Mode
/*message:data pointerlen :data lengthreturn :32bits CRC Value*/
uint32 GetCRC(void* message, uint16 len)
{
uint32 CRCFull = 0xFFFF;
uint8 CRCLSB;
int i = 0, j = 0;
uint8 *mess = message;
for (i = 0; i < len; i++) {
CRCFull = (uint16)(CRCFull ^ mess[i]);
for (j = 0; j < 8; j++) {
CRCLSB = (uint8)(CRCFull & 0x0001);
CRCFull = (uint16)((CRCFull >> 1) & 0x7FFF);
if (CRCLSB == 1) CRCFull = (uint16)(CRCFull ^ 0xA001);
}
}
return CRCFull;
}
2018年08月12日 06点08分
1
Little-Endian Mode
/*message:data pointerlen :data lengthreturn :32bits CRC Value*/
uint32 GetCRC(void* message, uint16 len)
{
uint32 CRCFull = 0xFFFF;
uint8 CRCLSB;
int i = 0, j = 0;
uint8 *mess = message;
for (i = 0; i < len; i++) {
CRCFull = (uint16)(CRCFull ^ mess[i]);
for (j = 0; j < 8; j++) {
CRCLSB = (uint8)(CRCFull & 0x0001);
CRCFull = (uint16)((CRCFull >> 1) & 0x7FFF);
if (CRCLSB == 1) CRCFull = (uint16)(CRCFull ^ 0xA001);
}
}
return CRCFull;
}

