动态ip

>

代理ip软件

>

换ip软件

>

HTTP代理

>
Socks5代理
黑核动态ip代理
您的位置: 首页 > 新闻资讯 > 正文

浅谈字符IP地址和整型数转换

发布时间:2019-12-25 13:52:52 来源:黑核动态ip代理

分享到

  IP(Internet Protocol),IP地址中文名称为互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

浅谈字符IP地址和整型数转换

  常用的IP地址有IPV4和IPV6,IPV4地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。IPV6是128位长度,由于IPV4地址长度限制了IP数量,进而发展到IPV6。对于IPV4而言,在使用到网络配置参数时,一般输入格式是以字符型“xxx.xxx.xxx.xxx”格式输入,而保存时则转换为4个8位(unsigned char)整型数或者1个32位(unsigned int)整型数,以节约存储空间,对于使用EEPROM等小容量介质存储有优势。当然也可以以字符型保存,开辟12或者15个字节的存储空间。因此,需用到IP地址与整型数互转的函数,存储时将字符型的IP地址转换为整型;使用时,从存储位置读取的整型IP地址再转换为字符型。

  1.整型转字符IP地址

void ipvalue_to_ipaddr(unsigned int ip_value,char *ip_addr)
{    sprintf(ip_addr,"%d.%d.%d.%d\0",
            (ip_value>>24)&0x000000ff,
            (ip_value>>16)&0x000000ff,
            (ip_value>>8)&0x000000ff,
            (ip_value&0x000000ff));
}

  字符串操作首要注意点是结束符,对于字符格式化函数“sprintf”,大家对于是否会添加结束符‘\0’,存在很多异议,据网友在不同编译器下测试,结果是不一样的,有的会带结束符,有的则不带。因此,稳妥的做法是,程序员自己加上结束符,适合在不同编译器,避免更换编译器时掉坑里。

  2.IP地址转整型数

  方式一:

unsigned int ipaddr_to_ipvalue(char *ip_addr)
{    unsigned int ip_value;    char *p;    char buf[4],i=0;

    p = strtok(ip_addr,".");    while((p)&&(i<4))
    {
        buf[i] = atoi(p);
        p = strtok("",".");
        i++;
    }
    ip_value = buf[0]<<24 | buf[1]<<16 | buf[2]<<8 | buf[3];    return ip_value;
}

  上述代码调用到的“strtok”函数是非线性安全函数(不可重入),因为strtok原型采用的是静态内存分配,如果多线程访问时会出现数据异常。在Linux平台下,提供了线程安全函数“strtok_r”,Linux较新版本支持“strsep”函数,效率更高。

  方式二:

  对于方式一,应用在Windows上位机上可以正确执行,但在MCU端执行时出错,初步判断是“strsep”函数问题。实现该函数的初衷就是应用在嵌入式上,因此,重新实现字符IP地址转整型数函数。

/**
  * @brief  ipv4地址转整型
  * @param  ip_addr:字符ip地址,"192.168.1.254";ip_num:返回数字ip
  * @retval 是否成功,0表示成功,非0出错
*/uint8_t ipv4addr_to_ipvalue(const char *ipv4_addr,uint32_t *ipv4_num)
{    char buff[4]={0};
    uint8_t i=0,j=0,k=3,ipaddr_len=0;
    uint32_t temp=0;    

    ipaddr_len = strlen(ipv4_addr);    if((ipaddr_len > 15)|| (ipaddr_len <7)) /*ip地址长度错误*/        return 1;
    *ipv4_num = 0;    for(i=0;i<=ipaddr_len;i++) 
    {        if(ipv4_addr[i]=='\0'|| ipv4_addr[i]=='.')
        {       
            if((j==0)||(j>3))           /*长度超出*/                return 1;
            buff[j] = '\0';             /*结束符*/
            temp =atoi(buff);            if(temp > 255)                return 1;               /*超出范围*/
            *ipv4_num |= temp<<(k*8);            if(k==0)                break;                  /*强制结束,ip地址点分超出时,只取前面*/
            k--;
            j=0;
            buff[0]='\0';               /*清空缓存*/
        }        else
        {
            buff[j]=ipv4_addr[i];
            j++;
        }
    }    return 0;
}

  字符IP地址转为整型的优势就是,减少存储IP地址空间,减少索引IP字符串类型消耗的资源量。


相关资讯

换ip软件帮您解决ip被封烦恼!

换ip软件帮您解决ip被封烦恼!我想做互联网工作的基本上都需要换下ip吧,很多时候我们做推广经常被封账号,特别是同一个IP自问自答马上封你没商量,但是这些推广也

来源:黑核混拨IP网

2018-12-25 15:52:02

不知道怎么样修改ip地址可以用黑核混拨IP软件

现在做推广越来越难做了,动不动就被封号,要么就是一个IP只能登陆一个账号,这就尴尬了,如果只用一个账号推广根本不见效啊,或者说见效也效果不大,只能大批量的做推广

来源:黑核混拨ip加速器网

2018-12-25 16:28:24

黑核混拨IP加速器让你知道如何改变ip地址

被论坛禁言了?玩游戏作弊,被封号了?被人屏蔽IP是件很让人不爽的事情,平时正忙的时候被封禁,会有种天塌下来的感觉。如何改变ip地址成了我们比做的事情,不改变IP

来源:黑核混拨ip加速器网

2018-12-25 16:58:44

黑核混拨IP加速器轻松解决怎么修改手机ip地址问题

有些视频播放站很坑,一天只能观看几个视频就需要开通会员才能看了,但是我们又不想冲会员怎么办,那就需要修改手机IP地址了,但是怎么修改手机IP地址呢?不是谁都懂的

来源:黑核混拨ip加速器网

2018-12-25 17:39:01

还在找ip地址修改器吗?来试试黑核混拨IP加速器吧

国内ip地址修改器顾名思义就是转换自己的IP地址的一个工具或者一款软件,ip地址修改用哪些工具好处呢,因为工作或者个人需求,修改IP后可以注册一些限制IP注册的

来源:黑核混拨ip加速器网

2018-12-25 18:13:13

在国外想玩lol国服吗?来试试这个ip加速器吧

身在国外想玩下国服游戏是一件很痛苦的事情,因为网络延迟太高了,卡到让人怀疑人生的那种地步,有多卡呢?玩个游戏能卡出漫画的效果来,看着都着急啊。特别是玩游戏的时候

来源:黑核混拨ip加速器网

2018-12-27 17:07:17

什么是ip代理软件?可以修改ip地址吗?

经常碰到朋友问,代理IP是做啥的,有什么用。我对他一顿解释,然后他还是云里雾里,好吧,可能是我口才不好,这里写文再解释下。代理IP对于很多人来说,用处很大,他们

来源:黑核混拨ip加速器网

2018-12-27 17:27:18

浅谈字符IP地址和整型数转换

IP(InternetProtocol),IP地址中文名称为互联网协议地址(英语:InternetProtocolAddress,又译为网际协议地址),是IPA

来源:黑核动态ip代理

2019-12-25 13:52:52

Python爬虫在采集数据的时候如何解决ip被封

Python爬虫数据采集分析有一套在社会发展大洪流下,如果你对Python爬虫的看法仍然局限于恶意分析竞争对手网站,恶意采集信息这种片面观点上,那你真的out了

来源:黑核混拨ip代理

2019-01-18 16:21:49

IP加速器的使用方法和简单问题解决办法

IP加速器,顾名思义就是加速IP,提升网络性能,降低网络延迟。黑核混拨ip加速器是一款ip量大速度快的加速器,非游戏外挂,可以放心使用。IP加速器的客户端设置简

来源:黑核混拨ip加速器网

2018-12-28 10:21:44

浅谈SOCKS5代理与HTTP代理的应用区别

【1】什么是SOCKS5协议。SOCKS是一种网络传输协议,主要用于客户端与外网服务器之间通讯的中间传递。SOCKS是"Sockets”的缩写。当防火

来源:黑核混拨ip代理

2019-03-28 13:48:33

在线客服
讨论QQ群
客服电话
13318873961
微信客服