비트 필드의 endian 모드에 관해서
글쓴이: 송지석 / 작성시간: 목, 2005/06/16 - 5:55오후
16비트로 된 bit field를 가지고 있는 데이터형이 있습니다.
typedef struct { short myflag0 :1, myflag1 :1, ..... myflag15:1 } flags_t;
네트웍으로 서로 다른 플랫폼에서 flag로 사용하려는데요
보내는 쪽은 Big-endian 시스템(Motorola PPC)이고 받는 쪽은 Little-endian (인텔/리눅스)입니다.
받는 쪽에서 flag = ntohs(flag) 로 변환해서 데이터를 보면
비트필드가 완전히 반대로 되어있는 것으로 보입니다.
myflag0을 1로 세팅했는데 받아서 보면 myflag15가 세팅되어있는 식으로요.
typedef 내용을 싹 바꿔서 Little-endian용으로 순서가 반대로 된 타입을 새로 만들면 되긴 되겠지만 이런 데이터 형이 더 있을 것이라서, 그리고 포팅에 유용하지 않을 것 같은데요.
gcc 컴파일러 옵션이나 pragma, __attribute__ 같은 키워드로 비트필드의 endian 모드를 설정할 수 있는가요?
Forums:
댓글 달기