这个2进制转16进制哪里错啦!!!(求改)

#include <bits/stdc++.h>
using namespace std;
int main(){
	string a;
	cin>>a;
	int c;
	while(a.size()%4!=0){
		a='0'+a;
	}
	for(int i=0;i<a.size();i+=4)
	{
		c=(a[i]-'0')*8+(a[i+1]-'0')*4+(a[i+2]-'0')*2+(a[i+3]-'0')*1;
		if(a>=10){
			if(a==10){
				cout<<'A';
			}
			if(a==11){
				cout<<'B';
			}
			if(a==12){
				cout<<'C';
			}
			if(a==13){
				cout<<'D';
			}
			if(a==14){
				cout<<'E';
			}
			if(a==15){
				cout<<'F';
			}
		}
		else{
			cout<<a;
		}
	}
    return 0;
}

大哥,你这代码都编译错误了
能不能自己检查一下啊?

1 个赞

你这错误点真的多

所有的 if 语句里的 a 都要改成 c

还有,在给 c 赋值的时候要判断是否超出 a 的长度,不然那一位减去 ‘ 0 ’ 就是负数了

1 个赞