位域&大小端


#include <stdio.h>
#include <netinet/in.h>
int main()
{
    unsigned int a = 33333;
    unsigned int b = htonl(a);
    printf("a:%x\n",a);
    printf("b:%x\n",b);
    return 0;
}

大端系统输出:
a:8235
b:8235

小端系统输出
a:8235
b:35820000



int main()
{
    char* c;
    struct bitfield {
    int ia:3;
    int ib:2;
    int ic:3;
    } field;
    field.ia=4;
    field.ib=2;
    field.ic=2;
    c=(char *) &field;
    printf("%#x\n",*c);
    return 0;
}
大端输出0xffffff92
小端输出0x54

大端:ia->ib->ic由高地址到低地址排序
小端:ia->ib->ic由低地址到高地址排序




#include <stdio.h>
#include <netinet/in.h>
int main()
{
    unsigned int a = 33333;
    unsigned int b = htonl(a);
    printf("a:%x\n",a);
    printf("b:%x\n",b);
    return 0;
}

大端系统输出:
a:8235
b:8235

小端系统输出
a:8235
b:35820000

你可能感兴趣的:(位域&大小端)