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