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小时内与您取得联系。