C/C++ ip地址与int类型的转换实例详解
发布时间 - 2026-01-10 22:13:43 点击率:次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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在云主机上快速搭建多站点网站?
JavaScript如何实现音频处理_Web Audio API如何工作?
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
Laravel如何自定义错误页面(404, 500)?(代码示例)
利用vue写todolist单页应用
如何在腾讯云服务器上快速搭建个人网站?
iOS UIView常见属性方法小结
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
开心动漫网站制作软件下载,十分开心动画为何停播?
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
Bootstrap CSS布局之列表
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
如何在自有机房高效搭建专业网站?
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
Python数据仓库与ETL构建实战_Airflow调度流程详解
如何在宝塔面板中创建新站点?
ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】
javascript如何操作浏览器历史记录_怎样实现无刷新导航
Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
Laravel如何处理CORS跨域请求?(配置示例)
如何用虚拟主机快速搭建网站?详细步骤解析
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
潮流网站制作头像软件下载,适合母子的网名有哪些?
C语言设计一个闪闪的圣诞树
Java遍历集合的三种方式
音响网站制作视频教程,隆霸音响官方网站?
如何做网站制作流程,*游戏网站怎么搭建?
Laravel中的withCount方法怎么高效统计关联模型数量
如何快速配置高效服务器建站软件?
Laravel怎么连接多个数据库_Laravel多数据库连接配置
Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
Java解压缩zip - 解压缩多个文件或文件夹实例
如何在云指建站中生成FTP站点?
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
Laravel如何使用Service Container和依赖注入?(代码示例)
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
Internet Explorer官网直接进入 IE浏览器在线体验版网址
,在苏州找工作,上哪个网站比较好?
如何基于云服务器快速搭建个人网站?
详解Android——蓝牙技术 带你实现终端间数据传输
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
如何用AWS免费套餐快速搭建高效网站?

