crc아시는분 코드점 봐주세여
창의적
질문 제목 : crc16비트 알고리즘crc16비트 주석 헬프미질문 내용 : crc16비트 코딩한거 자료를 구햇는데 이해가 잘안가네요 ㅜ
crc16 나눗셈 과정은 알겠는데 아래코드에서 어떻게 수행되는건지 주석좀 달아주세여ㅜ#include stdio.h
#include string.h
#define poly 0x11021 /* crc-ccitt mask */
/* global variables */
char text[1000];
unsigned short good_crc;
unsigned short bad_crc;
unsigned short text_length;
void go();
void repeat_character(unsigned char, unsigned short);
void update_good_crc(unsigned short);
void augment_message_for_good_crc();
void update_bad_crc(unsigned short);
int main(void)
{
sprintf(text, %s, );
go();
sprintf(text, %s, a);
go();
sprintf(text, %s, 123456789);
go();
repeat_character(65, 256);
go();
return 0;
}
void go(void)
{
unsigned short ch, i;
good_crc = 0xffff;
bad_crc = 0xffff;
i = 0;
text_length= 0;
while((ch=text[i])!=0)
{
update_good_crc(ch);
update_bad_crc(ch);
i++;
text_length++;
}
augment_message_for_good_crc();
printf(
\ngood_crc = %04x, bad_crc = %04x, length = %u, text = \%s\,
good_crc, bad_crc, text_length, text
);
}
void repeat_character(unsigned char ch, unsigned short n)
{
unsigned short i;
for (i=0; in; i++)
{
text[i] = ch;
}
text[n] = 0;
}
void update_good_crc(unsigned short ch)
{
unsigned short i, v, xor_flag;
/*
align test bit with leftmost bit of the message byte.
*/
v = 0x80;
for (i=0; i8; i++)
{
if (good_crc & 0x8000)
{
xor_flag= 1;
}
else
{
xor_flag= 0;
}
good_crc = good_crc 1;
if (ch & v)
{
/*
append next bit of message to end of crc if it is not zero.
the zero bit placed there by the shift above need not be
changed if the next bit of the message is zero.
*/
good_crc= good_crc + 1;
}
if (xor_flag)
{
good_crc = good_crc ^ poly;
}
/*
align test bit with next bit of the message byte.
*/
v = v 1;
}
}
void augment_message_for_good_crc()
{
unsigned short i, xor_flag;
for (i=0; i16; i++)
{
if (good_crc & 0x8000)
{
xor_flag= 1;
}
else
{
xor_flag= 0;
}
good_crc = good_crc 1;
if (xor_flag)
{
good_crc = good_crc ^ polrc ^ poly;
}
}
}
void update_bad_crc(unsigned short ch)
{
/* based on code found at
http://www.programmingparadise.com/utility/crc.html
*/
unsigned short i, xor_flag;
/*
why are they shifting this byte left by 8 bits??
how do the low bits of the poly ever see it?
*/
ch=8;
for(i=0; i8; i++)
{
if ((bad_crc ^ ch) & 0x8000)
{
xor_flag = 1;
}
else
{
xor_flag = 0;
}
bad_crc = bad_crc 1;
if (xor_flag)
{
bad_crc = bad_crc ^ poly;
}
ch = ch 1;
}
}
| 번호 | 제 목 | 글쓴이 | 날짜 |
|---|---|---|---|
| 2752085 | 문자열을 랜덤하게 출력해서 대체,삽입,삭제 횟수를 각가 표시하고 그걸 표 형태로 출력 | 슬아s | 2026-10-20 |
| 2752056 | 포인터 && 배열 질문요~ (2) | 해찬나래 | 2026-10-20 |
| 2752031 | x^n 구하는 코드 짜봤는데 값이 틀려요 ㅠㅠ | 세실 | 2026-10-20 |
| 2752000 | 나 정말 미치겠어요..ㅠㅜ (4) | 다이 | 2026-10-20 |
| 2751978 | 문자열 질문이요.. | 초시계 | 2026-10-19 |
| 2751945 | 숫자 맞추는 프로그램이요 ㅠㅠ (1) | 동은 | 2026-10-19 |
| 2751917 | C언어 이중 연결 관련 질문합니다. | 유우 | 2026-10-19 |
| 2751888 | return의 정확한 의미좀 알려주세요 (3) | 올해1살 | 2026-10-19 |
| 2751857 | 포인터 배열 (2) | 터큰 | 2026-10-18 |
| 2751831 | 연산자? 질문입니다 (2) | 진주 | 2026-10-18 |
| 2751800 | C언어 기초질문입니다.. (3) | 핫블랙 | 2026-10-18 |
| 2751739 | 파일 출력을 구조체로 받을 때, 파일의 끝을 판별하는 방법을 알려주세요. (2) | 얼 | 2026-10-17 |
| 2751715 | unresolved external symbol 에러... | 이룩 | 2026-10-17 |
| 2751686 | 변수 설정에 관한 질문입니다. | 꽃달 | 2026-10-17 |
| 2751655 | 자료구조 연습문제 | 한무릎 | 2026-10-17 |
| 2751631 | gets 함수 질문이요. (4) | 해늘 | 2026-10-16 |
| 2751553 | 퀵정렬 소스인데 주석좀 달아주세요 (1) | 싴흐한세여니 | 2026-10-16 |
| 2751528 | 저기 이거하는법좀 질문.. (2) | 가람슬기 | 2026-10-15 |
| 2751445 | 도저히 풀 수가 없네요.... (2) | 신당 | 2026-10-15 |
| 2751412 | 어제부터 계속 해도.........안되는.... (1) | 족장 | 2026-10-14 |
