구조체 값들을 배열로 memcpy 이용해 저장할때
미련곰탱이
질문 제목 : 구조체 값들을 배열로 memcpy 이용질문 요약 :구조체 값들을 배열로 memcpy 이용해 저장할때 이상한 값이 나와요질문 내용 :
구조체에서 값들을 char형 배열에 1바이트씩 저장하여 16진수 값들로 출력해보려고 하는데요
소스는 다음과 같습니다
#includestdio.h#include string.h#pragma pack(1)struct a{unsigned short Rcv_add;unsigned short Snd_add;span d;unsigned short Msg_length;char Option;char Resev;char Msg[5];};#pragma pack()int main(void){struct a data;char byte[13];int i;data.Rcv_add=0x0180;data.Snd_add=0x0150;data.Msg_length=0x000D;data.Option=0x01;data.Resev=0x00;strcpy(data.Msg,HELLO);memcpy(byte,&data,13);for(i=0;i13;i++){printf(%x ,byte[i]);}return 0;}이렇게 소스 수정하니 값이 다음과 같이 나왔습니다ffffff80 1 50 1 d 0 1 0 48 45 4c 4c 4f원래대로라면 01 80 01 50 00 0D 01 00 48 45 4c 4c 4f 이렇게 나와야 할텐데
출력값 앞에 ffffff 과, 본래값이 자리가 뒤바뀌어서 나온이유를 모르겠습니다 ㅠㅠ
고수님들 도와주세요!
-
LetMeGo
수다님 감사합니다! 앞에 ffffff 는 해결했습니다
근데 데이터 값이 두자리씩 앞뒤가 바뀌어서 나오는 현상은 어떻게 해결하는지요?
리틀 엔디안? 빅 엔디안 형식 이런거 때문에 그런가요?