2011-04-05 4 views
0

는 구조체의 IP에IP 헤더 도움말?

#if __BYTE_ORDER == __LITTLE_ENDIAN 
    unsigned int ip_hl:4;  /* header length */ 
    unsigned int ip_v:4;  /* version */ 
#endif 
#if __BYTE_ORDER == __BIG_ENDIAN 
    unsigned int ip_v:4;  /* version */ 
    unsigned int ip_hl:4;  /* header length */ 
#endif 

리틀 엔디안과 빅 엔디안에만 멀티 바이트 값에 영향을 다음과 같이 정의한다 왜. ip_v 앞에 ip_hl을 저장하는 이유는 무엇입니까?이후에 ip_hl을 전송하면 안됩니까?

답변

1

Endianess는 결과 구조의 바이트 내에서 컴파일러가 비트 필드 필드 (끝에 "4"는 값의 4 비트 만 의미 함)를 넣는 방식에도 영향을줍니다. 빅 엔디안의 경우 비트는 최상위 비트에서 채워집니다. 리틀 엔디안의 경우 비트는 최하위 비트부터 채 웁니다.