#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的构造是左闭右开的一定要记住。
整体上是对输入输出做处理,没什么难度

京公网安备 11010502036488号