把IP地址转换为字符串

|------------|-----------------|
| 十六进制地址 | 点分十进制地址 |
| 0x0 | 0.0.0.0 |
| 0xffffffff | 255.255.255.255 |
| 0x7f000001 | 127.0.0.1 |
[表1 把十六进制地址变为点分十进制地址]

程序如下

cpp 复制代码
​
#include <stdio.h>

char str[16]={'\0'};               // 存放点分十进制串
 
struct in_addr {
	 unsigned int s_addr;
 };
 
char *inet_ntoa(struct in_addr in);      // 函数声明
 
 
 int main()
 {
	 struct in_addr addr0;
     char *s;
 
	 addr0.s_addr=0x8002c2f2;          // 存放IP地址
   
	 s=inet_ntoa(addr0);
	 printf("%s",s);
	 return 0;
	 
 }
 
 char *inet_ntoa(struct in_addr in)
 {
	 unsigned int x,temp;
	 unsigned int mask=0xff000000;   // 掩码
	 char i,j,k=0,m,n,t;
	 char *tp;
	 
	 x = in.s_addr;
	 j=3;i=0;m=i;
	 for(j=3;j>=0;j--)
	 {
		 temp = x & mask;                // 字节IP值
		 temp = temp>>(j*8);            // 移动到最低字节
		 mask>>=8;                     // 掩码右移1字节
		 do                           // 10进制数从低位到高位的ASCII码保存在数组str中
		 {
			 str[i]=temp%10+'0';
			 temp=temp/10;
			 i++;
		 }while(temp);
		 
		 if(k<3)                    // 前3个数字串用.字符分隔
		 {
		   str[i]='.';
		   k++;
		 }
		 for(n=i-1; m<n; m++,n--)        // 每个数字串逆序存放
		 {
		   t=str[m];
		   str[m]=str[n];
		   str[n]=t;
		 }
		 i++;
		 m=i;                 // m存放数字串第1个字符的位置编号
	 }
	 tp=str;                  // 数组首地址送指针tp
	 return tp;
 }
 
	 
	 
	 
	 
 
​

运行结果:

128.2.194.242

相关推荐
WL_Aurora1 分钟前
Python 算法基础篇之排序算法(二):希尔、快速、归并
python·算法·排序算法
闻缺陷则喜何志丹7 分钟前
【图论 树 启发式合并】P7165 [COCI2020-2021#1] Papričice|普及+
c++·算法·启发式算法·图论··洛谷
alexwang2119 分钟前
AT_abc458_d [ABC458D] Chalkboard Median题解
c++·算法·题解·atcoder
故事和你919 分钟前
洛谷-【图论2-4】连通性问题1
开发语言·数据结构·c++·算法·动态规划·图论
xhbh66618 分钟前
MC端口映射完全教程:路由器虚拟服务器配置+防火墙放行+内网穿透备用方案
运维·服务器·网络·网络协议·tcp/ip·智能路由器·流量端口转发
周末也要写八哥19 分钟前
算法实例分析:使数组相等的最小开销
算法
吃好睡好便好22 分钟前
在Matlab中绘制质点运动轨迹图
开发语言·学习·算法·matlab·信息可视化
爱炼丹的James25 分钟前
第三章 搜索和图论
数据结构·算法·图论
Ether IC Verifier25 分钟前
TCP拥塞控制详解
网络·网络协议·tcp/ip·计算机网络·dpu
切糕师学AI26 分钟前
计算机网络层次结构详解:从OSI七层模型到TCP/IP四层模型
网络·tcp/ip·计算机网络