#include <iostream> using namespace std; #include <string> #include <vector> #include <sstream> #include <cmath> int v2i(const vector<int>& num) { int result = 0; for (int i = 0; i < num.size(); i++) { result = result + num[i] * pow(2, i); } return result; } long long int ip2T(string str) { string num1; string num2; string num3; string num4; istringstream ip(str); getline(ip, num1, '.'); getline(ip, num2, '.'); getline(ip, num3, '.'); getline(ip, num4); return stoi(num1) * pow(2, 24) + stoi(num2) * pow(2, 16) + stoi(num3) * pow(2, 8) + stoi(num4); } void T2ip(string str) { long long int num = stoll(str); int i = 0; vector<int> ip2(32, 0); while (num != 0) { if (num % 2 != 0) { ip2[i] = 1; } num = num / 2; i++; } vector<int> num1(ip2.begin(), ip2.begin() + 8); vector<int> num2(ip2.begin() + 8, ip2.begin() + 16); vector<int> num3(ip2.begin() + 16, ip2.begin() + 24); vector<int> num4(ip2.begin() + 24, ip2.begin() + 32); cout << v2i(num4) << "." << v2i(num3) << "." << v2i(num2) << "." << v2i( num1) << endl; } int main() { string str1; string str2; getline(cin, str1); getline(cin, str2); long long int result1 = ip2T(str1); cout << result1 << endl; T2ip(str2); }
基础不扎实踩坑了,vector的构造是左闭右开的一定要记住。
整体上是对输入输出做处理,没什么难度