#include <algorithm> #include <iterator> #include <string> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param ip string字符串 * @return string字符串 */ string fill_l(string t){ //不足八位向左填充0; while(t.size()<8) t.insert(0,"0"); return t; } string transform(string n){ //十进制数转二进制 int a=stoi(n); string str=""; while(a){ int t=a%2; str+=to_string(t); a/=2; } reverse(str.begin(),str.end()); return str; } string IPtoNum(string ip) { // write code here stack<string> stk; string std=""; string str=""; for(int i=0;i<ip.size();i++){ //堆栈存储各位值,小数点进行分割 if(ip[i]!='.'){ std+=ip[i]; } else{ stk.push(std); std=""; } } if(std.size()!=0) stk.push(std); std.clear(); while(!stk.empty()){ //求二进制数 string g=fill_l(transform(stk.top())); reverse(g.begin(),g.end()); std+=g; stk.pop(); } // reverse(std.begin(),std.end()); long long sum=0; //求二进制的十进制结果 for(int i=0;i<std.size();i++){ sum+=pow(2,i)*(std[i]-'0'); } return to_string(sum); } };