字节序

字节序

数据存储有两种方式:大端字节序和小端字节序
网络序采用大端,本地存储采用小端

  • 大端字节序:数据的高位在地址的低位,从左到右(符合人读数的习惯)

  • 小端字节序:数据的高位在地址的高位,从右向左

字节序_第1张图片

#include 

(无符号)64字节主机转网络:htobe64(uint64_t data)

(无符号)64字节网络转主机:be64toh(uint64_t data)

(无符号)32字节主机转网络:htobe32(uint32_t data)

(无符号)32字节网络转主机:be32toh(uint32_t data)

(无符号)16字节主机转网络:htobe16(uint16_t data)

(无符号)16字节网络转主机:be16toh(uint16_t data)  
#include 
#include 
using namespace std;

int main()
{
	uint16_t a = 1;
	cout << "sizeof uint16_t = " << sizeof(uint16_t) << endl;	// 2

	char* p = (char*)&a;
	cout << "a = " << a << endl;	// 1
    // 电脑存储默认是小端,数据的高位在地址的高位
	cout << (int)*p << " " << (int)(*(p+1)) << endl;	// 1 0
	
	a = htobe16(a);
	cout << "a = " << a << endl;	// 256
	cout << (int)*p << " " << (int)(*(p+1)) << endl;	// 0 1

	return 0;
}

你可能感兴趣的:(C++)