若是以bit 為單位在
big_endian : struct 由上而下 在記憶體的位置則是以bits為單位 由高位排至低位
little_endian :struct 由上而下 在記憶體的位置以1byte 為單位 由最高位byte的最低位bit開始 往記憶體低位排
以ipv6 addr packet 的前4個byte 為例 (from wiki)
例子如下:
#ifdef _BIG_ENDIAN
uint32 version:4;
uint32 tclassH:4;
uint32 tclassL:4;
uint32 flow_lblH:4;
uint32 flow_lblL:16;
#elif _LITTLE_ENDIAN
uint32 tclassH:4;
uint32 version:4;
uint32 flow_lblH:4;
uint32 tclassL:4;
uint32 flow_lblL:16;
#endif
其中big_endian 其實也可以寫的更簡潔
uint32 version:4;
uint32 tclass:8;
uint32 flow_lblL:20;
沒有留言:
張貼留言
有敘述錯誤或者是觀念有問題歡迎指正