[완료] 비트필드 엔디안문제 때문에 글 올립니다...
글쓴이: dnghqls / 작성시간: 월, 2008/11/24 - 12:52오후
패킷 헤더 파싱 과제를 하고 있는데요...
그 파싱할 IP헤더의 구조체를 이렇게 만들었습니다.
typedef struct { unsigned char ver : 4, hlen :4; ... ...
이렇게 한후 IP헤더부분을 통째로 fread 하였습니다...
문제는 엔디안 같은데요.
unsigned short, int는 ntohs나 ntohl써서 해결했습니다... 근데 저 1바이트를 읽어올때도 비트필드가 설정되어 있으면...
엔디안이 적용되나요?
45가 54로(ver: 5, hlen: 4) 되는것 같습니다.
Forums:
C에서 bit field가
C에서 bit field가 상위/하위 중에 어느 비트에 들어가야 된다는 규칙은 없는데요. 관행적으로 먼저 쓴 비트가 LSB입니다. (endian에 관계없이)
ipv4 헤더에서 먼저 나오는 비트는 MSB입니다.
비디오 스트림을
비디오 스트림을 분석하거나 하는 쪽에 보면 구조체를 엔디안별로 두개씩 선언해놓고 쓰더군요.
http://kldp.org/node/75216#comment-436708
요렇게요...
댓글 달기