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