实现代码:
#include<iostream>
#include<cstring>
using namespace std;
bool check(char *str); //检查串中是否有0/1之外的字符
int trans(char *str); //将0/1字符串转换成十进制
bool check(char *str)
{
int i;
for(i=0;i<32;i++)
if(str[i]!='1' && str[i]!='0')
return false;
return true;
}
int trans(char *str)
{
int n=0,i;
for(i=0;i<8;i++)
{
if(str[i]=='1')
n=n*2+1;
else
n=n*2;
}
return n;
}
int main()
{
char IP[33];
cout<<"32位二进制IP地址:"<<endl;
cin>>IP;
if(strlen(IP)!=32)
cout<<"IP地址长度应为32位"<<endl;
else
{
if(!check(IP))
cout<<"IP串中有0/1外字符"<<endl;
else
{
//四次调用trans()分别转换四组二进制数
cout<<"IP地址对应的点分十进制:"<<endl;
cout<<trans(IP)<<"."<<trans(IP+8)<<"."<<trans(IP+16)<<"."<<trans(IP+24)<<endl;
}
}
return 0;
}
运行结果: