文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>大字节序、小字节序原理说明及各操作系统的判断方法

大字节序、小字节序原理说明及各操作系统的判断方法

时间:2010-08-26  来源:He,YuanHui

多说无益,绕的人头晕,看个地址就明白了:

大字节序:把高有效位放在低地址段,例如在按字节寻址的存储器中往地址 0x0001 存放值 0x12345678,在存储器中为
     地址             数值
     0x0004        0x78
     0x0003        0x56
     0x0002        0x34
     0x0001        0x12

小字节序:把低有效位放在低地址段,例如在按字节寻址的存储器中往地址 0x0001 存放值 0x12345678,在存储器中为
     地址             数值
     0x0004        0x12
     0x0003        0x34
     0x0002        0x56
     0x0001        0x78

现在主流的CPU,intel系列的是采用的little endian的格式存放数据的。

 

判定方法:

    很多语言自带函数,但Linux还没找到,写个函数如下判断:

 

bool IsLittleEndian()
{
    union
    {
        long Long;
        char Char[sizeof(long)];
    } u;

    u.Long = 1;
    if (u.Char[0] == 1)
    {
        return true;
    }
    else if (u.Char[sizeof(long) - 1] == 1)
    {
        return false;
    }
    else
    {
        throw "Unknown Addressing!";
    }
}

 

 再上一个大小字节序转换函数:

 

void EndianConvert(unsigned int* value)
{
    *value = *value<<24 | ((*value&0xFF00)<<8) | ((*value&0xFF0000)>>8) | ((*value&0xFF000000)>>24);
}

 

 

 

参考:

http://www.dnbcw.com/biancheng/c/esbu62056.html

http://hi.baidu.com/wbwssb/blog/item/7114224df46c6dc6d1c86ac6.html

相关阅读 更多 +
排行榜 更多 +
幸存者的命运

幸存者的命运

飞行射击 下载
精英战区3d

精英战区3d

飞行射击 下载
货运猎人

货运猎人

飞行射击 下载