首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于联结使用的小疑惑 求大神指点

2013-06-26 
关于联合使用的小疑惑 求大神指点书上说当用联合将各种不同大小的数据类型结合在一起时,字节顺序问题就变

关于联合使用的小疑惑 求大神指点
书上说当用联合将各种不同大小的数据类型结合在一起时,字节顺序问题就变的很重要了。
在什么时候字节顺序会产生问题呢?谢谢


double bit2double(unsigned word0,unsigned word1)
{
      union
      {
            double d;
            unsigned u[2];
      }temp;
      
      temp.u[0]=word0;
      temp.u[1]=word1;
      return temp.d;
}

union?? 字节顺序
[解决办法]
union
      {
            double d;     //8字节
            unsigned u[2];//4字节
      }temp;
       
      temp.u[0]=word0; //假设为0x12345678 (高位为1,低位为8)
      temp.u[1]=word1; //假设为0x22222229
      return temp.d;

对于小端,内存地址从高到低和数据从低位到高位顺序一致,则double d为 0x12345678 22222229
对于大端,内存地址从高到低和数据从低位到高位顺序相反,则double d为0x22222229 12345678

这时,不同大小端,对于d来说,相差甚远。

热点排行