#include <stdio.h>
unsigned char test(unsigned char *, int, int);
int main(void)
{
unsigned char message[5] = {'A', 'B', 'C', 'D'};
unsigned char ans;
test(&message[4], 5, 1);
printf("송신시 결과 = %d\n", (int) message[4]);
ans = test(&message[4], 5, 2);
printf("수신시 결과 = %d\n", (int) ans);
return 0;
}
unsigned char test(unsigned char *p, int cnt, int flag)
{
unsigned short int hap = 0;
unsigned char *z;
z=p;
while(cnt--)
{
hap = hap + *p--;
if (hap & 0xFF00)
{
hap = hap & 0xFF;
hap = hap + 1;
}
printf("cnt = %d hap = %d\n", cnt, hap);
}
if (flag == 1)
{
*z = ~(hap & 0xFF);
return 0;
}
else
return ~(hap & 0xFF);
}
-----------------------------------------------------------------------
<보기1>
<보기2>
인터넷에서 정보를 송수신할 때 사용되는 오류 검출 기법을 간략하게 구현한 후, IPv4헤더에서 이 기법의 실제 계산과정을 알아보고자한다. <보기1>에주어진ASCII코드 값을 참조하여 화면상에 출력되는 결과를 순서대로 쓰시오.
그리고 <보기2>의 헤더를 송신할 때 그 필드의 값을 계산하는 과정을 설명하시오.(단, <보기2>에서 ( )안에 표기된 단위는 bit이고, HLEN은 header length의 약자임),
형들.. 난 프로그래머가 아님을 미리 밝혀
근데 내가 준비하는 시험과목중에 C언어가 있기에 지금 윤성우 C프로그래밍 책으로 씨름한지 일주일이됐어.
인강은 거의 다듣고 시험문제를 봤지. 마치 흑형의 펀치를 맞은것같아 이렇게 도움을 청해.
도대체 어느 깊이 까지 공부해야하는거야? 저정도 부담없이 해석하는데까지 얼마나 걸려?
내가 준비해야되는 분야가 꽤 많은데다 올해 10월정도에 시험이 있어서 마음만 급해지네;;
unsigned char test(unsigned char *, int, int);
int main(void)
{
unsigned char message[5] = {'A', 'B', 'C', 'D'};
unsigned char ans;
test(&message[4], 5, 1);
printf("송신시 결과 = %d\n", (int) message[4]);
ans = test(&message[4], 5, 2);
printf("수신시 결과 = %d\n", (int) ans);
return 0;
}
unsigned char test(unsigned char *p, int cnt, int flag)
{
unsigned short int hap = 0;
unsigned char *z;
z=p;
while(cnt--)
{
hap = hap + *p--;
if (hap & 0xFF00)
{
hap = hap & 0xFF;
hap = hap + 1;
}
printf("cnt = %d hap = %d\n", cnt, hap);
}
if (flag == 1)
{
*z = ~(hap & 0xFF);
return 0;
}
else
return ~(hap & 0xFF);
}
-----------------------------------------------------------------------
<보기1>
문자 | 10진수 | 16진수 |
A B C D | 65 66 67 68 | 0x41 0x42 0x43 0x44 |
<보기2>
version(4) | HLEN(4) | type of service(8) | total length(16) |
identification(16) | flags(3) | fragment offset(13) | |
time to live(8) | protocol(8) | header checksum(16) | |
source IP address(32) | |||
destination IP address(32) |
인터넷에서 정보를 송수신할 때 사용되는 오류 검출 기법을 간략하게 구현한 후, IPv4헤더에서 이 기법의 실제 계산과정을 알아보고자한다. <보기1>에주어진ASCII코드 값을 참조하여 화면상에 출력되는 결과를 순서대로 쓰시오.
그리고 <보기2>의 헤더를 송신할 때 그 필드의 값을 계산하는 과정을 설명하시오.(단, <보기2>에서 ( )안에 표기된 단위는 bit이고, HLEN은 header length의 약자임),
형들.. 난 프로그래머가 아님을 미리 밝혀
근데 내가 준비하는 시험과목중에 C언어가 있기에 지금 윤성우 C프로그래밍 책으로 씨름한지 일주일이됐어.
인강은 거의 다듣고 시험문제를 봤지. 마치 흑형의 펀치를 맞은것같아 이렇게 도움을 청해.
도대체 어느 깊이 까지 공부해야하는거야? 저정도 부담없이 해석하는데까지 얼마나 걸려?
내가 준비해야되는 분야가 꽤 많은데다 올해 10월정도에 시험이 있어서 마음만 급해지네;;
비트 연산 원리만 알고있어도 문제 없음
와.. 일주일인데 저정도까지 하나.... [핡]
부럽다
윤성우느님 강의 일주일듣고 저문제를 접하니깐 마치 싱크홀로 들어가고 싶은 기분이 들었어;; 그래서 깊이가 궁금하고.. 비트연산원리는 언제쯤 깨우칠수있는거야 ?
??? 책에 나오잖아?
2진수 0000 1011 과 XOR 0000 1101 의 결과는 0000 0110 이라던지..
이문제 비트연산관련 원리만 알면 해독가능한거야??
~(0x22 & 0xFF); 은 ~(00100010 & 11111111) 이고, ~는 비트의 역을 취하는거니..
char *p을 감소시키면서 패킷을 분해하고 있는거니.... 윤성우 C책에 포인트 부분까지가 범위라 할 수 있겠네.
아아 고마워 형 ^^ 느낌이 오네~ 그럼 이문제 주제는 비트연산인건가 ?? 나머지 함수는 대충 볼줄알겠는데
다시한번 매달려봐야겠다... 고마워 ^^
아 형은 처음에 C공부할때 뭘로 어떻게 공부함?
컴파일러 코드작성 실행 수정 많이 해봐야돼? 내 시험은 해석이 중요하긴한데
직접 프로그래밍하는 게 환경상 좀 힘들어서 ;;
문제를 변형해보고 임의에 값을 대입했을때 결과가 어떻게 나올지 컴파일하지 않고 해석해보던지;