一、概念
1.小端法(Little-Endian)就是低位字节排放在内存的低地址端(即该值的起始地址),高位字节排放在内存的高地址端;
2.大端法(Big-Endian)就是高位字节排放在内存的低地址端(即该值的起始地址),低位字节排放在内存的高地址端;
2.大端法(Big-Endian)就是高位字节排放在内存的低地址端(即该值的起始地址),低位字节排放在内存的高地址端;
网络字节序是大端字节序
#include <arpa/inet.h>
uint32_t htonl(uint32_t hostlong);
二、判断本机cpu平台字节序:
if (1 == htonl(1)),说明本机字节序跟网络字节序相同,即大端字节序,否则为小端字节序
三、64位主机字节序整数转换成64位网络字节序整数
uint64_t htonll(uint64_t ull)
{
if (1 != htonl(1))
{
uint64_t ullRet = 0;
char *pSrc = (char *)&ull;
char *pDst = (char *)&ullRet;
pDst[0] = pSrc[7];
pDst[1] = pSrc[6];
pDst[2] = pSrc[5];
pDst[3] = pSrc[4];
pDst[4] = pSrc[3];
pDst[5] = pSrc[2];
pDst[6] = pSrc[1];
pDst[7] = pSrc[0];
return ullRet;
}
return ull;
}