1、大小端概念
大小端表示数据在存储器中存放的顺序。
大端模式:数据的高字节保存在内存的低地址中,低字节则保存在内存的高地址中。
小端模式:数据的高字节保存在内存的高地址中,低字节保存在内存的低地址中。
如下例:
uint8_t A = 0xA1
uint8_t B = 0xB1
uint8_t C = 0xC1C2
说明uint8_t C中的0xC1为高字节,0xC2为低字节。
在上图中,对于单字节(8位)数据在大小端模式下没有任何区别。
2、大小端使用的原因
大小端使用情况
小端模式:x86和一般的os(windows、FreeBSD、Linux)都使用小端模式存放数据。
大端模式:MC OS使用大端模式。
原因
在进行网络传输数据时,可能数据传输的两端对应不同的硬件平台(使用的端模式不同),各自储存的字节顺序不同。所以在TCP/IP协议规定必须采用网络字节模式,即大端模式。(一般小端转大端)
3、c++中大小端转换函数
// 在linux上
#include <arpa/inet.h>
uint32_t htonl(uint32_t hostlong); // host to net long int 32位
uint16_t htons(uint16_t hostshort); // host to net short int 16位
uint32_t ntohl(uint32_t netlong); // net to host long int
uint16_t ntohs(uint16_t netshort); // net to host short int 16位