32位IP地址转换为点分10进制的IP地址

来源:互联网 发布:迈克尔比斯利体测数据 编辑:程序博客网 时间:2024/04/29 03:01

实现代码:

#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;}

运行结果:


0 0
原创粉丝点击