一、概念
大端模式:数据的低位存放在内存的高地址中
小端模式:数据的低位存放在内存的低地址中
二、数据的高低位
首先需要清楚一段数据存储高低位区分
联想记忆最右边为16^0 下来16^1 比如下图二进制为例:
三、内存的高低位
以vs2019为例来看,看到这个内存监视窗口,
从左到右,从上到下均是按照由小到大顺序排列的
四、区分
低地址数据放高位即为大端
低地址数据放低位即为小端
五、检测大小端程序
【方式一】利用char类型只有一个字节特性
如果*(char*)&a==1 那么即为小端。
#include<iostream>
using namespace std;
bool check()
{
int a = 1;
return *(char*)&a == 1;
}
int main()
{
if (check())
cout << "小端" << endl;
else
cout << "大端" << endl;
return 0;
}
六、网络字节序
字节序:cpc对内存中数据以字节为单位进行存取的顺序
即分为小端字节序和大端字节序
int a = 0x01020304
大端字节序:01 02 03 04
小端字节序:04 03 02 01
网络字节序不同的俩台主机进行通信,就会造成数据传输时的数据二义。
解决方案:网络传输数据,使用统一的字节序标准---网络字节序(采用大端字节序)
因此不需要关心传输数据时对方的主机字节序,因为发送到对方网络中的都为网络字节序