|
안녕하세요? 개박살입니다
: typedef union DataWord__u {
: struct {
: unsigned char Hi;
: unsigned char Lo;
: } Nibble;
: unsigned char Data[2];
: short int IData;
: } DataWord_u;
: #pragma pack(pop)
: typedef union DataFWord__u{
: struct {
: DataWord_u Hi;
: DataWord_u Lo;
: }Word;
: unsigned char Data[4];
: int IData;
: } DataFWord_u;
여기서요 전 union & struct에다가 패키징을 해보심이 어떻습니까?
확실한건 아니지만 아무래도 메모리 정렬문제인거 같아서요 ^^;
: typedef union DataFWord__u{
: struct {
: DataWord_u Hi;
: DataWord_u Lo;
: }Word;
: unsigned char Data[4];
: int IData;
: } DataFWord_u;
여기서 int 는 unsigned long으로 바꾸셔야 하겠군요~
그럼 한번해보세요~ 의견이었습니다~
만해 님이 쓰신 글 :
: 안녕하세요 만해입니다.
:
: typedef union DataWord__u {
: struct {
: unsigned char Hi;
: unsigned char Lo;
: } Nibble;
: unsigned char Data[2];
: short int IData;
: } DataWord_u;
: #pragma pack(pop)
: typedef union DataFWord__u{
: struct {
: DataWord_u Hi;
: DataWord_u Lo;
: }Word;
: unsigned char Data[4];
: int IData;
: } DataFWord_u;
:
: 이렇게 정의되어 있는 상태에서요
:
: DataFWord_U AWord;
: FWord.Word.Hi.Nibble.Hi = 'a';
: FWord.Word.Hi.Nibble.Lo = 'b';
: FWord.Word.Lo.Nibble.Hi = 'c';
: FWord.Word.Lo.Nibble.Lo = 'd';
:
: 이렇게 입력을 하고 난 후에
:
: FWord.Data를 확인해 보면 'abcd0x40' 이런식으로
:
: 제가 원하는 값이 아닌 쓰레기 값이 있는 경우가 종종 생기는데요
:
: 이게 왜 이런지 모르겠네요
:
: 혹시나 해서
:
: unsigned char 형으로 정의 된걸 싹다 char 형으로 바꿔 보기도 했는데 왜 이러는지 모르곘네요
:
: 고수님들의 도움 바랍니다.
|