文章
105
粉丝
69
获赞
117
访问
56.8k
#include<bits/stdc++.h>
using namespace std;
char num[1010];
bool cheak(string str) //判断合法性
{
int cnt = 0, sum = 0;
for(int i = 0; i < str.size(); i ++)
{
if(sum > 255) return false;
if((str[i] < '0' || str[i] > '9') && str[i] != '.') return false;
else sum = sum * 10 + (str[i] - '0');
if(str[i] == '.')
{
if(str[i + 1] == '.' )return false;
cnt ++;
sum = 0;
}
}
if(cnt != 3) return false;
return true;
}
string fun(string str) //转换进制
{
string res;
int sum = 0, cnt = 0;
for(int i = 0; i < str.size(); i ++)
{
if(str[i] == '.')
{
sprintf(num, "%02X", sum);
res += num;
sum = 0;
}
else sum = sum * 10 + (str[i] - '0');
if(i == str.size() - 1)
{
sprintf(num, "%02X", sum);
res += num;
return res;
}
}
}
int main()
{
string str;
getline(cin, str);
if(cheak(str)) cout << "0x" << fun(str);
else cout << "Error";
...
登录后发布评论
暂无评论,来抢沙发