728x90
반응형
소스
#include <stdio.h>
unsigned int crc16(char* msg,unsigned int len)
{
int crc_val = (*msg) ^ 0xffff;
char HI_crc = 0;
char LO_crc = 0;
int i, j = 0;
for (i = 0; i < len; i++) {
if(i==0) crc_val = (*msg) ^ 0xffff;
else {
msg++;
crc_val = crc_val ^ (*msg);
}
//printf("%x\n", crc_val);
for (j = 0; j < 8; j++) {
if (crc_val & 0x0001) {
crc_val = (crc_val>>1) ^ 0xA001;
//printf("P1:%x\n", crc_val);
}
else {
crc_val = crc_val >> 1;
//printf("P2:%x\n", crc_val);
}
}
}
HI_crc = crc_val;
LO_crc = crc_val >> 8;
crc_val = (HI_crc << 8) + LO_crc;
printf("%x\n", crc_val);
}
void main(void)
{
char test_data[6] = {0x01, 0x03, 0x00, 0x02, 0x00, 0x02};
//printf("0x%x", test_data[0]);
crc16(&test_data, 6);
}
crc 알고리즘 같은 경우
초기값과 기준값에 따라서 달리진다.
저 같은 경우엔 CRC-16 (Modbus) 계산 방식입니다.
https://www.lammertbies.nl/comm/info/crc-calculation?crc=8005&method=hex
결과
728x90
반응형
'공부 > C언어' 카테고리의 다른 글
29. union 메모리 분할 하기 (0) | 2021.07.13 |
---|---|
Visual studio 콘솔 창 유지 하기 (0) | 2021.07.13 |
27. 구조체 와 함수 (0) | 2020.02.04 |
26. static 구조체 (0) | 2019.07.26 |
25. 구조체_구조체 함수_구조체 포인트 (0) | 2019.07.26 |