what is the difference between little-endian and big-endian.

老掉牙的问题,不过有时候往往因为这个问题而找不到问题的根源所在,最近就因为大小端问题害我浪费了半天时间,所以写下小记让自己多care一下这些细节问题。

1. 概念描述

little-endian 高字节在存储在高地址处,低字节存储在低地址处;

big-endian 高字节在存储在低地址处,低字节存储在高地址处。

 

简单的例子,对于一个32位的数0x88776655,保存在地址0x00000000处,对应的大小端存储格式如下:
                          big-endian         little-endian
0x00000000         0x88                  0x55
0x00000001         0x77                  0x66
0x00000002         0x66                  0x77
0x00000003         0x55                  0x88

 

2. 判断所用的处理器类型

x86系列处理器都是用little-endian格式,PowerPC则使用big_endian格式,对于一些不太明确的处理器类型可以写个程序加以判别:

typedef union
{
    unsigned char b1;
    unsigned int t1;
} endien_t;

bool IsLittleEnd(void)
{
    endien_t t;
    t.b1 = 0x01;

    return (t.t1&0xff);
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值