|
안녕하세요 만해입니다.
오랜만에 여기에 글을 적어 보네요
비트 필드를 이용해서 프로그래밍을 해야 할일이 생겼는데요
제가 모르는 부분이 있어서 좀 봐 주십사 글을 올립니다.
먼저
#pragma pack(push,1)
typedef union {
char Data:8;
unsigned int IData:8;
struct {
char HNibble:4;
char LNibble:4;
};
}Byte;
#pragma pack(pop)
이렇게 정의 된 ,Byte 형은 제 생각엔 1바이트인데
ShowMessgae(sizeof(Byte));을 실행하면 4 바이트가 나오거든요
왜 그런지 좀 알려 주세요
그리고요
typedef union // 1Word = 2Byte
{
struct {
Byte Hbyte;
Byte Lbyte;
};
char Data[2];
}Word;
Word AWord;
AWord.Hbyte.Data = 'a';
AWord.LByte.Data = 'b';
이렇게 입력을 했을때
Word.Data에 "ab"가 입력되게 할려고 하는데요
실제론 Word.Data에 'a'만 입력 되어 있네요
뭐가 잘 못된건지 또 이걸 해결 할려면 어떻게 해야 하는지 좀 알려주세요~
그럼이만~
|