大端字节序和小端字节序

不同的系统,对于存储的内容的高字节,可能分别放在物理地址的高地址或低地址。

我们可以简单地将内存看成是线性的连续地址。

对于高字节存放在低地址的字节序,称为大端字节序。网络字节序就是大端字节序。

反之,高字节存放在低地址的字节序,称为小端字节序。

 

bool isLittleEndian()
{
    int i = 1;
    char *a = (char*)&i;
    return *a;// 若true 小端字节序;反之 大端字节序
}

 

例子:

#include <iostream>
using namespace std;


union Test
{
    int a;
    short b;
};

int main()
{
    Test test;
    test.a = 0x01020304;
    
    cout << test.b << endl;
    return 0;
}

// 对于小端字节序  输出772(0x0304)
// 对于大端字节序  输出258(0x0102)

 

posted @ 2019-06-04 21:59  N0b0dy  阅读(703)  评论(0编辑  收藏  举报