十进制点分IP转换为32位二进制IP

本文提供了一个程序示例,用于将十进制点分的IP地址转换为32位二进制表示,并验证了输入IP地址的有效性。程序采用模块化设计思想,通过指针传递参数,确保数据的正确处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

十进制点分IP转换为32位二进制IP
#include<iostream>
using namespace std;
int main()
{
	char ch[33];
	char s[100],*p;
	int a[4],n,l=0,i;
	//	while(1)
	//	{
	//	cout<<"请输入十进制点分式IP"<<endl;
	cin.getline(s,99);
	p=s;
	//	cout<<s<<endl;
	for(i=0;i<4;i++)
	{
		if((*p>'9' || *p<'0') && *p!='.')
			break;
		n=0;
		while((*p)!='.'&&*p!=0)
		{
			n=n*10+*p-48;
			p++;
		}
		a[i]=n;
		if(*p=='.'&&*(p+1)=='.')
			break;
		
		if(i==3 && *p!=0)
			i++;
		
		p++;
	}
	if(i==4)
	{
		
		for(int k=0;k<4;k++)
		{
			int t=k*8;
			for(int j=7;j>=0;j--)
			{
				ch[t+j]=a[k]%2+48;
				a[k]=a[k]/2;
			}
			if(a[k]!=0)
			{
				cout<<"data error"<<endl;
				l=1;
				break;
			}
			
		}
		
		if(l==0)
		{
			ch[32]=0;
			cout<<ch<<endl;
		}
	}
	else
		cout<<"data error"<<endl;
	//	}
	
	return 0;
}

题目内容:

编写程序,将十进制点分的IP转换为32位二进制IP地址。程序要能验证输入的十进制点分IP地址的合法性。用户输入的IP不和法时,输出"data error"。


请使用模块化程序设计的思想,将功能模块编写成函数。通过指针传递参数,操作数据,返回结果。在主函数中输入IP地址,调用函数进行合法性验证和转换,在主函数中输出32位二进制IP。


输入格式:

十进制点分IP地址(英文句点)


输出格式:

32位二进制数(二进制字符串)


输入样例:

202.151.96.33


输出样例:

11001010100101110110000000100001


提示:十进制转换为二进制。对整数部分,除2取余,直到商为0。例如

13/2=6.....1(低位)

6/2=3......0

3/2=1......1

1/2=0......1

转换后的二进制数位1101

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值