Chinaunix首页 | 论坛 | 博客
  • 博客访问: 169696
  • 博文数量: 49
  • 博客积分: 2802
  • 博客等级: 大尉
  • 技术积分: 502
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-25 12:02
个人简介

来就来吧

文章分类

全部博文(49)

文章存档

2014年(1)

2012年(1)

2011年(11)

2010年(26)

2009年(10)

分类: C/C++

2011-04-29 14:48:23

big-endian & little-endian 指平台不一样,就是字节序存储问题,同一个值,在big-endian和little-endian中存储顺序不一样。

int a = 0x11223344;

big-endian 平台上,字节存储顺序是:

存储格式:

底字节 -->  高字节

第一个字节   第二个字节  第三个字节  第四个字节
   11            22         33          44

little-endian 平台上,字节存储顺序是:

存储格式:

底字节 -->  高字节

第一个字节   第二个字节  第三个字节  第四个字节
   44            33         22          11



例子:

 int main()
{
    unsigned int a= 0x11223344;
    char b ;
    char c ;
    char d,e ;
    char * p ;

    printf(" a = %x\n", a);

    p = (unsigned char*)&a;

    printf("p = %x\n", p);
    b = *((unsigned char*)p);


    p = p + 1;
    printf("p+1 = %x\n", p);
    c = *((unsigned char*)p);

    p = p + 1;
    printf("p+2 = %x\n", p);
    d = *((unsigned char*)p);

    p = p + 1;
    printf("p+3 = %x\n", p);
    e = *((unsigned char*)p);



    printf("b = %x, c = %x, d = %x, e = %x \n", b, c, d, e);

}

结果 :

a = 11223344
p = bf9f64e4
p+1 = bf9f64e5
p+2 = bf9f64e6
p+3 = bf9f64e7
b = 44, c = 33, d = 22, e = 11 




阅读(1423) | 评论(0) | 转发(0) |
0

上一篇:strcmp

下一篇:securecrt 设置vim打开的颜色

给主人留下些什么吧!~~