文章
1
粉丝
0
获赞
26
访问
406
#include <iostream>
#include <algorithm>
using namespace std;
char t[20]="0123456789ABCDEF";//用于映射16进制
void func(int x) {
int a=x/16, b=x%16;
cout << t[a];
cout << t[b];
}
bool ip(int a, int b, int c, int d) {//检查ip是否是0-255
if (a > 255 || a < 0) return 0;
if (b > 255 || b < 0) return 0;
if (c > 255 || c < 0) return 0;
if (d > 255 || d < 0) return 0;
return 1;
}
int main()
{
int a, b, c, d;
char n[100];
scanf("%s",n);//第一次读入看是否是x.x.x.x
int count=0;
for(int i=0;n[i]!='\0';i++){
if(n[i]=='.')count++;
}
if(count!=3){
printf("Error");
return 0;//不是x.x.x.x就直接结束
}
if (sscanf(n,"%d.%d.%d.%d", &a, &b, &c, &d)&&ip(a, b, c, d)) {//如果是就用sscanf格式化读入避免类型转换
cout << "0x";
func(a);
func(b);
func(c);
func(d);
}
else {
cout << "Error";
}
return 0;
}
用scanf读入字符串看是否有三个'.'
然后用sscanf格式化读入避免复杂的转换类型
ip()用于检查是否符合0-255
func()用于...
登录后发布评论
暂无评论,来抢沙发