32位IP地址轉換為點分10進位制的IP地址
阿新 • • 發佈:2019-01-05
實現程式碼:
#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; }
執行結果: