字节序及IP地址转换

字节序

字节序:指多字节数据在计算机内存中存储或网络传输时各字节的存储顺序,分为大端字节序,小端字节序;

 大端字节序就是存储0x11223344时现存高位11,依次往低位存储,而小端字节序则相反

编程查看字节序是大端还是小端

#include <stdio.h>

int main() 
{
    unsigned int val32 = 0x11223344;//定义无符号变量val32
    unsigned char val8 = *((char *)(&val32))://通过强制转换为无符号数char类型
    if (val8 == 0x44) {
        printf("本机是小端字节序\n");
    } else {
        printf("本机是大端字节序\n");
    }
    return 0;
}
//最终结果是本机的字节序类型

字节序转换函数

头文件:#include <arpa/inet.h>

字节序转换函数:32位数据 本机转网络:htonl ; 网络转主机:ntohl

                             16位数据 本机转网络:htons; 网络转主机:ntohs

        网络字节序采用大端字节序排序,本机字节序采用小端字节序排序(方便主机计算)

IP地址字节序转换函数

1、IP地址可能会存在“点分十进制”的字符串形式,转换之前需要注意

2、主机字节序一般采用小端字节序

3、网络字节序转主机字节序以后通常需要转换成“点分十进制”的字符串

字符串转32为数据函数:

#include <arpa/inet.h>

IP地址序转换函数

        in_addr_t inet_addr(const char *cp);

        int inet_aton(const char *cp,struct in_addr *addr);

        int inet_phon(int af,const char *cp,void *addr);

IP地址字节序转换函数

        32位数据转字符串

        #include <arpa/inet.h>

IP地址序转换函数

        char *inet_ntoa(struct in_addr in);

        int inet_ntop(int af,const void *addr,char *cp);

IP地址字节序转换函数

        支持IPV6的地址转换函数

        #include <arpa/inet.h>

        IP地址序转换函数

        int inet_pton(int af,const char *cp,void *addr);

        int inet ntop(int af,const void *addr,char *cp);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值