题目
- 字符ip -> int
- int->ip
目的
主要训练字符串的处理
解法
#include <vector>
#include <string>
#include <iostream>
using namespace std;
int ip2int(string& str) {
int start = 0;
vector<int> ipdata;
str.append(".");
for (int i = 0; i < str.length(); i++) {
if(str[i] == '.' || i == str.length() -1) {
ipdata.push_back(atoi(str.substr(start, i - start).c_str()));
start = i + 1;
}
}
uint32_t ret = 0, seg = 0;
for(auto dt: ipdata) {
ret += dt << (8 * seg++);
}
return ret;
}
string int2ip(uint32_t dt) {
string str("");
char strTmp[8] = {'\0'};
for (int i = 0; i < 4; i++) {
sprintf(strTmp, "%d", dt & 0xFF);
str.append(strTmp).append(".");
dt = dt >> 8;
}
return str.substr(0, str.size() -1);
}
int main() {
string str("192.145.2.34");
cout << str << endl;
cout << ip2int(str) << endl;
cout << int2ip(ip2int(str)) << endl;
return 0;
}