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

posted on 2010-08-26 15:17  He,YuanHui  阅读(3204)  评论(0编辑  收藏  举报

Add to Google