其他分享
首页 > 其他分享> > 一文彻底搞懂大小端字节序(转载)

一文彻底搞懂大小端字节序(转载)

作者:互联网

转载自:https://blog.csdn.net/weixin_36623563/article/details/106533745

一文彻底搞懂大小端字节序

Sam, Xu 2020-06-03 21:51:41 1070 收藏 9

文章标签: c++

版权

一文彻底搞懂大小端字节序


文章目录

1.基本概念

字节序(byte order)表征计算机对于多字节数据在内存中的存储顺序,对于单字节数据则没有字节序概念;

struct Test {
    int a = 0x11223344;
    short b = 0x8899;
    short c = 0xabcd;
};

1.1大端字节序(big-endian)

高位字节存储在低地址, 低位字节存储在高位地址,如Fig1.所示:
在这里插入图片描述

Fig1. 大端字节序存储示例图

1.2小端字节序(little-endian)

高位字节存储在高地址, 低位字节存储在低地址,如Fig2.所示:
在这里插入图片描述

Fig2. 小端字节序存储示例图

2. 常用处理器架构大小端模式

X86ARMPowerPC51
小端小端大端大端

3. 如何查看系统的大小端模式

3.1 dpkg-architecture

只适用于debain发行版, 比如ubuntu,结果如Fig3.所示。
在这里插入图片描述

Fig3. dpkg-architecture结果

3.2 lscpu

适用于debian和redhat等, 比如ubuntu, centos等,结果如Fig4.所示。
在这里插入图片描述

Fig4. lscpu结果

3.3 file

更通用,结果如Fig5.所示。
在这里插入图片描述

Fig5. file结果

3.4 程序判断

//返回true代表小端, 返回false代表大端
bool isLittleEndian(void)
{
    union check
    {
        int idata;
        char cdata;
    } var;

    var.idata = 1;
    return(var.cdata == 1);
}

4. 网络通信字节序及其转换

4.1 本机字节序和网络字节序

4.2 网络通信时的字节序转换

Fig6. 无字节序转换数据流图

在这里插入图片描述

Fig7. 网络字节序转换数据流图

5.结论

标签:小端,网络通信,转换,字节,大端,所示,搞懂,一文
来源: https://blog.csdn.net/sinat_16643223/article/details/118696775