1. 程式人生 > >32位IP地址轉換為點分10進位制的IP地址

32位IP地址轉換為點分10進位制的IP地址

實現程式碼:

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

執行結果: