ip地址转换

需求:将一个无符号整型的数按8位进行一划分,转换为(192.168.1.1)这种IP地址形式。

方法一:常规方法

图解原理:转换为2进制,从右向左8位一划分,不足的部分用0填充。

函数设计:图示

核心:用四个变量分别记录没每8位二进制对应的十进制数

代码实现:

#include <stdio.h>
#include <string.h>    //strlen函数
#include <stdlib.h>    //itoa函数
#include <math.h>      //pow函数
void ipdress(unsigned int ip,char buff[])
{
    char arr[35];
    itoa(ip,arr,2);
    int len = strlen(arr)-1;
    int a=0,b=0,c=0,d=0;
    for(int i=0,j=0;j<32;i++,j++,len--)
    {
        if(i==8) i=0;  //次方控制变量
        if(len>=0 && arr[len] != '0'){
        if(j<8) d+=pow(2,i);
        else if(j>=8 && j<16) c+=pow(2,i);
        else if(j>=16 && j<24)b+=pow(2,i);
        else if(j>=24 && j<32) a+=pow(2,i);
        }
    }
    sprintf_s(buff,16,"%d.%d.%d.%d\0",a,b,c,d);//格式转换
}
int main()
{
    unsigned int ip=123456789;
    char buff[16];
    //scanf("%u",&ip);
    ipdress(ip,buff);
    printf("%s\n",buff);
    return 0;
} 

该代码的时间复杂度为: O(n)

用例 测试:

方法二:利用联合体结构(共享内存),结构体结构嵌套(字节对齐),将四个字节分为4份

ip地址每个字段为0~255,故使用无符号字符类型。

注意windows为小端存储模式。证明在此lian'jielianjie文末http://t.csdn.cn/gthdm

#include <stdio.h>

union ip
{
    unsigned int a;
    struct {
        unsigned char s1;
        unsigned char s2;
        unsigned char s3;
        unsigned char s4;
    };
};
void Toip(unsigned int a, char* buff)
{
    ip b ;
    b.a = a;
    int ch=b.s1;
    sprintf_s(buff, 16, "%d.%d.%d.%d\0", b.s4, b.s3, b.s2, b.s1);//格式转换
    //widows平台为小端模式,低地址存放低位数据
}
int main()
{
    unsigned int ip = 123456789;
    char buff[16];
    //scanf("%u",&ip);
    Toip(ip, buff);
    printf("%s", buff);
    return 0;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
IP地址的合法性检验是网络通信中非常重要的一环。在实际应用中,需要对用户输入的IP地址进行合法性检验,以确保系统的正常运行。下面是一个IP地址的合法性检验的实训设计。 1. IP地址格式 IP地址是由32位二进制数表示的,通常以点分十进制的形式表示,即每8位二进制数以点分隔。 例如:192.168.1.1 2. IP地址的合法性检验 IP地址的合法性检验包括以下几个方面: 2.1 检验输入的字符串是否符合IPv4地址格式,即是否包含4个数字,以点分隔,每个数字在0~255之间。 2.2 检验输入的字符串是否是合法的IP地址,即是否可以成功转换为32位二进制数,如果不能转换则说明输入的IP地址不合法。 2.3 检验输入的字符串是否是保留的IP地址,例如127.0.0.1是本地回环地址,不可作为有效的IP地址使用。 3. 实训步骤 3.1 设计IP地址合法性检验函数,该函数接受一个字符串参数,返回一个布尔值,表示该字符串是否是合法的IP地址。 3.2 编写测试用例,包括合法的IP地址、不合法的IP地址以及保留的IP地址,用于测试IP地址合法性检验函数的准确性。 3.3 实现IP地址输入框的前端验证,当用户输入IP地址时,立即调用IP地址合法性检验函数,如果输入的IP地址不合法,则给出提示信息。 4. 总结 IP地址的合法性检验是网络通信中非常重要的一环,合法性检验不仅可以保证网络通信的正常进行,还可以防止恶意攻击和非法访问。通过本次实训,学生可以深入理解IP地址的格式和合法性检验方法,掌握前端IP地址输入框的验证方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值