全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C/C++ ip地址与int类型的转换实例详解

C/C++ ip地址与int类型的转换实例详解

前言

最近看道一个面试题目,大体意思就是将ip地址,例如“192.168.1.116”转换成int类型,同时还能在转换回去

思路

ip地址转int类型,例如ip为“192.168.1.116”,相当于“.“将ip地址分为了4部分,各部分对应的权值为256^3, 256^2, 256, 1,相成即可

int类型转ip地址,思路类似,除以权值即可,但是有部分字符串的操作

实现代码

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <math.h> 
 
#define LEN 16 
 
typedef unsigned int uint; 
 
/** 
 * 字符串转整形 
 */ 
uint ipTint(char *ipstr) 
{ 
  if (ipstr == NULL) return 0; 
 
  char *token; 
  uint i = 3, total = 0, cur; 
 
  token = strtok(ipstr, "."); 
 
  while (token != NULL) { 
    cur = atoi(token); 
    if (cur >= 0 && cur <= 255) { 
      total += cur * pow(256, i); 
    } 
    i --; 
    token = strtok(NULL, "."); 
  } 
 
  return total; 
} 
 
/** 
 * 逆置字符串 
 */ 
void swapStr(char *str, int begin, int end) 
{ 
  int i, j; 
 
  for (i = begin, j = end; i <= j; i ++, j --) { 
    if (str[i] != str[j]) { 
      str[i] = str[i] ^ str[j]; 
      str[j] = str[i] ^ str[j]; 
      str[i] = str[i] ^ str[j]; 
    } 
  } 
} 
 
/** 
 * 整形转ip字符串 
 */ 
char* ipTstr(uint ipint) 
{ 
  char *new = (char *)malloc(LEN); 
  memset(new, '\0', LEN); 
  new[0] = '.'; 
  char token[4]; 
  int bt, ed, len, cur; 
 
  while (ipint) { 
    cur = ipint % 256; 
    sprintf(token, "%d", cur); 
    strcat(new, token); 
    ipint /= 256; 
    if (ipint) strcat(new, "."); 
  } 
 
  len = strlen(new); 
  swapStr(new, 0, len - 1); 
 
  for (bt = ed = 0; ed < len;) { 
    while (ed < len && new[ed] != '.') { 
      ed ++; 
    } 
    swapStr(new, bt, ed - 1); 
    ed += 1; 
    bt = ed; 
  } 
 
  new[len - 1] = '\0'; 
 
  return new; 
} 
 
int main(void) 
{ 
  char ipstr[LEN], *new; 
  uint ipint; 
 
  while (scanf("%s", ipstr) != EOF) { 
    ipint = ipTint(ipstr); 
    printf("%u\n", ipint); 
 
    new = ipTstr(ipint); 
    printf("%s\n", new); 
  } 
 
  return 0; 
} 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# ip地址与int类型转换  # C语言ip地址与int类型如何转换  # ip地址与int类型转换实现方法  # Visual C++ 常用数据类型转换方法详解  # 有关C++中类类型转换操作符总结(必看篇)  # C++中4种强制类型转换的区别总结  # 详解C语言中不同类型的数据转换规则  # 能在  # 希望能  # 谢谢大家  # 转换成  # 值为  # 各部分  # 近看  # 但是有  # string  # stdlib  # gt  # stdio  # lt  # math  # LEN  # typedef  # unsigned  # uint  # define  # br 


相关文章: 建站之星如何配置系统实现高效建站?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  如何通过VPS建站无需域名直接访问?  手机网站制作与建设方案,手机网站如何建设?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  建站主机CVM配置优化、SEO策略与性能提升指南  建站之星展会模版如何一键下载生成?  制作网站的软件免费下载,免费制作app哪个平台好?  如何在腾讯云免费申请建站?  如何通过虚拟机搭建网站?详细步骤解析  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  北京制作网站的公司,北京铁路集团官方网站?  建站主机服务器选型指南与性能优化方案解析  如何在阿里云虚拟主机上快速搭建个人网站?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  如何通过山东自助建站平台快速注册域名?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  IOS倒计时设置UIButton标题title的抖动问题  免费视频制作网站,更新又快又好的免费电影网站?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  视频网站app制作软件,有什么好的视频聊天网站或者软件?  如何用PHP快速搭建CMS系统?  已有域名和空间如何搭建网站?  b2c电商网站制作流程,b2c水平综合的电商平台?  如何用美橙互联一键搭建多站合一网站?  如何选择PHP开源工具快速搭建网站?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  网站微信制作软件,如何制作微信链接?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  制作宣传网站的软件,小红书可以宣传网站吗?  建站之星代理平台如何选择最佳方案?  如何通过主机屋免费建站教程十分钟搭建网站?  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  如何设置并定期更换建站之星安全管理员密码?  如何在建站宝盒中设置产品搜索功能?  如何在服务器上三步完成建站并提升流量?  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  如何在局域网内绑定自建网站域名?  Java解压缩zip - 解压缩多个文件或文件夹实例  网站制作软件免费下载安装,有哪些免费下载的软件网站?  建站主机是否等同于虚拟主机?  深圳网站制作培训,深圳哪些招聘网站比较好?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  西安专业网站制作公司有哪些,陕西省建行官方网站?  如何在阿里云域名上完成建站全流程? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。