字节序转换

一、概念
 
1.小端法(Little-Endian)就是低位字节排放在内存的低地址端(即该值的起始地址),高位字节排放在内存的高地址端;
2.大端法(Big-Endian)就是高位字节排放在内存的低地址端(即该值的起始地址),低位字节排放在内存的高地址端;
网络字节序是大端字节序
 
将主机数转换成无符号长整形的网络 字节顺序 系统函数:
#include <arpa/inet.h>
uint32_t htonl(uint32_t hostlong);
hostlong:主机 字节顺序 表达的32位数。
 
二、判断本机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;
}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值