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