메모리데이터 불러오기
글쓴이: Clientserver / 작성시간: 월, 2016/10/31 - 10:08오후
선배님들 안녕하십니다~
결과값이 나오질 않아서 조언 부탁드립니다.
typedef struct _Packet { unsigned char op; char account[15]; char passwd[5]; signed int balance; } PACKET; PACKET Packet = {'1', "123-45-6789", "1111", 1300}; char pc = (char*)&Packet; int i = 0; for(i=0; i<sizeof(Packet);i++){ printf(" 메모리값 출력 : %x \n", pc++); }
Forums:


char *pc = (char*)&Packet;
char *pc = (char*)&Packet;
...
printf(" 8bit씩 끊어서 16진수로 출력 : %x \n", *pc++);
간단했네요 감사합니다~
간단했네요 감사합니다~
딱 세 군데 고쳤습니다.
어딜 고쳤는지 맞춰보세요. :)
char *pc
char *pc
0xff &
*pc++
3군데 맞나요?ㅎㅎㅎ
//////////////////////////////
char *pc = (char*)&Packet;
0xff & *pc++);
여기 두부분 왜 이렇게 해야하는지 의미를 가르쳐 주실수 있나요?
포인터 부분은 어려워서 잘 모르겠네요...ㅜ
printf("%x", *pc)
printf("%x", *pc)
이부분을
printf("%x", (unsigned int)(*pc))
으로 바꿔줘야(형변환) 좀 더 정확한 문법이 됩니다.
%x 포맷스트링은 unsigned int 타입을 받기로 되어있습니다.
시스템의 byte-order에 따라서 다른값이 출력될 수 도 있으니 유의하세요.
구경하다 적어봅니다. ㅇ_ㅇ;;
typedef struct _Packet { unsigned char op; char account[15]; char passwd[5]; signed int balance; } PACKET; //구조체 선언 int main() { PACKET Packet = { '1', "123-45-6789", "1111", 1300 }; // 구조체에 값입력 char *pc = (char*)&Packet; //8bit씩 끊기위해서 char형으로 pc선언해야 하는것까지는 //알겠는데 = 뒤에 뭘 적어야할지 모르겠습니다 unsigned char op; char account[15]; char passwd[5]; signed int balance; memcpy(&op, &Packet.op, 1); memcpy(&account, &Packet.account, 15); memcpy(&passwd, &Packet.passwd, 5); memcpy(&balance, &Packet.balance, 4); printf(" %c \n", op); printf(" %s \n", account); printf(" %s \n", passwd); printf(" %d \n", balance); printf(" %x \n", &Packet); int i = 0; for (i = 0; i<sizeof(Packet); i++) { printf(" 8bit씩 끊어서 16진수로 출력 : %x %x \n", pc++, (*pc)++); } return 0; } 출력 결과 1 123-45-6789 1111 1300 4ffb94 8bit씩 끊어서 16진수로 출력 : 4ffb94 31 8bit씩 끊어서 16진수로 출력 : 4ffb95 31 8bit씩 끊어서 16진수로 출력 : 4ffb96 32 8bit씩 끊어서 16진수로 출력 : 4ffb97 33 8bit씩 끊어서 16진수로 출력 : 4ffb98 2d 8bit씩 끊어서 16진수로 출력 : 4ffb99 34 8bit씩 끊어서 16진수로 출력 : 4ffb9a 35 8bit씩 끊어서 16진수로 출력 : 4ffb9b 2d 8bit씩 끊어서 16진수로 출력 : 4ffb9c 36 8bit씩 끊어서 16진수로 출력 : 4ffb9d 37 8bit씩 끊어서 16진수로 출력 : 4ffb9e 38 8bit씩 끊어서 16진수로 출력 : 4ffb9f 39 8bit씩 끊어서 16진수로 출력 : 4ffba0 0 8bit씩 끊어서 16진수로 출력 : 4ffba1 0 8bit씩 끊어서 16진수로 출력 : 4ffba2 0 8bit씩 끊어서 16진수로 출력 : 4ffba3 0 8bit씩 끊어서 16진수로 출력 : 4ffba4 31 8bit씩 끊어서 16진수로 출력 : 4ffba5 31 8bit씩 끊어서 16진수로 출력 : 4ffba6 31 8bit씩 끊어서 16진수로 출력 : 4ffba7 31 8bit씩 끊어서 16진수로 출력 : 4ffba8 0 8bit씩 끊어서 16진수로 출력 : 4ffba9 ffffffcc 8bit씩 끊어서 16진수로 출력 : 4ffbaa ffffffcc 8bit씩 끊어서 16진수로 출력 : 4ffbab ffffffcc 8bit씩 끊어서 16진수로 출력 : 4ffbac 14 8bit씩 끊어서 16진수로 출력 : 4ffbad 5 8bit씩 끊어서 16진수로 출력 : 4ffbae 0 8bit씩 끊어서 16진수로 출력 : 4ffbaf 0 계속하려면 아무 키나 누르십시오 . . .----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
댓글 달기