컴퓨터/프로그래밍
CRC 프로그램 코드
Begi
2021. 7. 8. 21:27
반응형
XModem
XModem에 사용되는 16비트 CRC 계산 코드는 다음과 같다.
int calcrc(char *ptr, int count)
{
int crc;
char i;
crc = 0;
while (--count >= 0)
{
crc = crc ^ (int) *ptr++ << 8;
i = 8;
do
{
if (crc & 0x8000) crc = crc << 1 ^ 0x1021;
else crc = crc << 1;
} while(--i);
}
return (crc);
}
Modbus
Modbus에 사용되는 16비트 CRC 코드는 다음과 같다.
unsigned short CRC16 ( char *puchMsg, unsigned short usDataLen )
{
unsigned char uchCRCHi = 0xFF ;
unsigned char uchCRCLo = 0xFF ;
unsigned uIndex ;
while (usDataLen--)
{
uIndex = uchCRCLo ^ *puchMsg++ ;
uchCRCLo = uchCRCHi ^ auchCRCHi[uIndex] ;
uchCRCHi = auchCRCLo[uIndex] ;
}
return (uchCRCHi << 8 | uchCRCLo) ;
}
반응형