大小端问题

http://blog.csdn.net/yasaken/article/details/7243757 大小端问题


跨字节位域大小端转换实例讲解



注:结构体整体当做U16/U32来赋值时才会产生这种问题,如果是按字节或者移位方式访问则没有问题


typedef struct
{
    U16 a:2;
    U16 b:3;
    U16 c:11;
}S_BIT_SAMPLE;


//测试程序
VOS_VOID BigEndianDomainFiledTest(VOS_VOID)
{
S_BIT_SAMPLE *ps = NULL;
VOS_UINT16 u = 0x0a0b;


ps = (S_BIT_SAMPLE *)&u;


#if 0
printf("a=%d,b=%d,c=%d\n", ps->a, ps->b, ps->c);
#else
NM_PRINT(GBSC_PID_NM, PNT_LEV_ERROR, "BigEndianDomainFiledTest :a=%d,b=%d,c=%d",ps->a, ps->b, ps->c);
#endif
}


1)在大端CPU上的结果:a=0,b=1,c=523
内存地址:低--》高
0000 1010 0000 1011(每个字节内从左到右分别是数值的高位到低位)
a=00 b=001 c=010 00001011
2)在小端CPU上的结果:a=3,b=2,c=80
内存地址:低--》高
0000 1011 0000 1010
   b=010  a=11  c=000 01010000



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值