首页 > 其他 > 详细

如何判断设备大小端问题

时间:2020-03-18 21:09:34      阅读:42      评论:0      收藏:0      [点我收藏+]

1. 如何判断大小端设备

#include <iostream>
using namespace std;

typedef union utest
{
    int a;
    char b;
    
}utest;

int main(int argc, char** argv)
{
    utest ut;
    ut.a = 0xff030211;

    if (ut.b == 0x11)
    {
        std::cout << "this is le" << std::endl;
    }
    else if (ut.b == 0xff)
    {
        std::cout << "this is be" << std::endl;
    }    
    
    return 0;
}

解释:通过使用共用体的方式判断是否是大端设备,还是小端设备:

   在union中,所占的字节数为最大的成员所占自己数:对于大端设备,数据的低字节存放在内存中的高地址,高字节存在在内存的低地址;

   而对于char类型,只是一个字节,大小端对齐存放位置无影响,存放在低地址;

   因此,如果是大端设备,0xff030211数据中,0x11应该存放在高地址位,0xff存放在低地址位;

     此时,通过char 取低地址判断值即可确定大小端设备;

2. 如何将大端字节序和小端字节序进行互换

  

  __BYTE_ORDER  == __BIG_ENDIAN

 

如何判断设备大小端问题

原文:https://www.cnblogs.com/weiyouqing/p/12519902.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!