全网整合营销服务商

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

免费咨询热线: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 


相关文章: 建站主机与服务器功能差异如何区分?  Python路径拼接规范_跨平台处理说明【指导】  济南企业网站制作公司,济南社保单位网上缴费步骤?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  如何在IIS中配置站点IP、端口及主机头?  建站上传速度慢?如何优化加速网站加载效率?  如何用美橙互联一键搭建多站合一网站?  如何彻底卸载建站之星软件?  免费网站制作appp,免费制作app哪个平台好?  简易网站制作视频教程,使用记事本编写一个简单的网页html文件?  香港网站服务器数量如何影响SEO优化效果?  香港服务器租用每月最低只需15元?  建站之星如何快速更换网站模板?  已有域名和空间,如何快速搭建网站?  教学论文网站制作软件有哪些,写论文用什么软件 ?  海南网站制作公司有哪些,海口网是哪家的?  深圳网站制作案例,网页的相关名词有哪些?  如何在景安云服务器上绑定域名并配置虚拟主机?  学校为何禁止电信移动建设网站?  已有域名如何免费搭建网站?  宝塔建站无法访问?如何排查配置与端口问题?  魔方云NAT建站如何实现端口转发?  建站之星如何一键生成手机站?  如何选择PHP开源工具快速搭建网站?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  建站之星2.7模板快速切换与批量管理功能操作指南  如何用腾讯建站主机快速创建免费网站?  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?  c# 在高并发场景下,委托和接口调用的性能对比  建站主机服务器选型指南与性能优化方案解析  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  实现虚拟支付需哪些建站技术支撑?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  c++ stringstream用法详解_c++字符串与数字转换利器  零基础网站服务器架设实战:轻量应用与域名解析配置指南  seo网站制作优化,网站SEO优化步骤有哪些?  如何在云主机上快速搭建多站点网站?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  建站之星如何实现PC+手机+微信网站五合一建站?  营销式网站制作方案,销售哪个网站招聘效果最好?  制作表格网站有哪些,线上表格怎么弄?  如何通过虚拟主机快速完成网站搭建?  如何零成本快速生成个人自助网站?  定制建站流程步骤详解:一站式方案设计与开发指南  如何快速生成可下载的建站源码工具?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  常州企业网站制作公司,全国继续教育网怎么登录?  如何实现建站之星域名转发设置?  视频网站制作教程,怎么样制作优酷网的小视频?  如何打造高效商业网站?建站目的决定转化率 

您的项目需求

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