整数与IP地址间的转换
2017-06-09 18:11
204 查看
#include<bits/stdc++.h> using namespace std; long long StringToLonglong(string s) { long long sum=0; long long k=1; for(int i=s.size()-1;i>=0;i--) { sum+=(s[i]-'0')*k; k*=10; } return sum; } int main(){ char a[100]; while(gets(a)) { char *p=strtok(a,"."); vector<string>v; while(p!=NULL) { string s; for(int i=0;i<strlen(p);i++) s+=p[i]; v.push_back(s); p=strtok(NULL,"."); } if(v.size()==4) { long long sum=0; for(int i=0;i<v.size();i++) sum+=atoi(v[i].c_str())*pow(2,8*(3-i)); cout<<sum<<endl; } else if(v.size()==1) { long long num=StringToLonglong(v[0]); for(int i=0;i<4;i++) { if(i==3)cout<<(num%(long long)pow(2,8*(4-i))-num%(int)pow(2,(3-i)*8))/(int)pow(2,(3-i)*8)<<endl; else cout<<(num%(long long)pow(2,8*(4-i))-num%(int)pow(2,(3-i)*8))/(int)pow(2,(3-i)*8)<<"."; } /* int num1=(num-num%(int)pow(2,24))/(int)pow(2,24); int num2=(num%(int)pow(2,24)-num%(int)pow(2,16))/(int)pow(2,16); int num3=(num%(int)pow(2,16)-num%(int)pow(2,8))/(int)pow(2,8); int num4=num%(int)pow(2,8); cout<<num1<<"."<<num2<<"."<<num3<<"."<<num4<<endl; */ } } return 0; }
相关文章推荐
- 华为OJ(整数与IP地址间的转换)
- OJ------整数与IP地址间的转换
- java版ip地址与整数的互相转换
- ip地址与整数相互转换
- IP地址与整数之间的转换
- 整数与ip地址间的转换
- 两行Python代码实现IP地址与十进制整数互相转换
- 华为OJ——整数与IP地址间的转换
- 华为OJ:ip地址与整数之间的转换
- IP地址与整数的相互转换
- 【转】IP地址与整数之间的转换
- [华为OJ--C++]030-整数与IP地址间的转换
- IP地址与整数之间的转换
- C# IP地址和整数之间的转换,IP地址和数字ip地址的转换
- IP地址与整数之间的转换实现代码(asp.net)
- 整数与IP地址间的转换
- 【华为 OJ 】整数与IP地址间的转换
- ip地址与整数之间的转换
- 华为机试—整数与IP地址间的转换
- 华为OJ 整数与IP地址间的转换