题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
#include<iostream> #include<string> using namespace std; void toNum(string ip) { long num[4] = {0, 0, 0, 0}; int point = 0; //记录点出现的次数 for (int i = 0; i < ip.length(); i++) { //遍历ip字符串 if (ip[i] != '.') { //通过.分割 num[point] = num[point] * 10 + ip[i] - '0'; } else { point++; //点数增加 } } long output = num[0] << 24 | num[1] << 16 | num[2] << 8 | num[3]; //位运算组装 cout << output << endl; } void toIP(long num){ string output = ""; output += to_string((num >> 24) & 0xff); //取第一个八位二进制转换成字符 output += "."; output += to_string((num >> 16) & 0xff); //取第二个八位二进制转换成字符 output += "."; output += to_string((num >> 8) & 0xff); //取第三个八位二进制转换成字符 output += "."; output += to_string(num & 0xff); //取第四个八位二进制转换成字符 cout << output << endl; } int main() { string s; getline(cin, s); long num;//需要转IP地址的长整数 cin >> num; toNum(s); toIP(num); return 0; }