求各位犇犇帮我改一下!!(一点RE)
查看原帖
求各位犇犇帮我改一下!!(一点RE)
1383405
Leonardo20142楼主2025/1/22 08:10
#include<bits/stdc++.h>
using namespace std;
string bin[11]={"000","001","010","011","100","101","110","111"};
string h[31][3]={
	{"0000","0"},
	{"0001","1"},
	{"0010","2"},
	{"0011","3"},
	{"0100","4"},
	{"0101","5"},
	{"0110","6"},
	{"0111","7"},
	{"1000","8"},
	{"1001","9"},
	{"1010","a"},
	{"1011","b"},
	{"1100","c"},
	{"1101","d"},
	{"1110","e"},
	{"1111","f"}
};
int search(string a){
	for(int i=0;i<=15;i++)
		if(h[i][0]==a)
			return i;
	return 0;
}
string to_bin(string o){
	string ans;
	for(int i=0;i<o.size();i++){
		char c=o[i];
		ans+=bin[int(c-'0')];
	}
	return ans;
}
void fix(string &a){
	if(a.size()%4!=0){
		reverse(a.begin(),a.end());
		int t=4-a.size()%4;
		for(int i=1;i<=t;i++){
			a.push_back('0');
		}
		reverse(a.begin(),a.end());
	}
	return;
}
string to_hex(string b){
	fix(b);
	string ans;
	for(int i=b.size();i>0;i-=4){
		string t;
		t=b.substr(i-4,4);
		ans+=h[search(t)][1];
	}
	return ans;
}
int main(){
	string a;
	cin>>a;
	reverse(a.begin(),a.end());
	while(a.size()>1 && a[a.size()-1]=='0')a.erase(a.size()-1,1);
	reverse(a.begin(),a.end());
	//cout<<a;
	string binn=to_bin(a);
	string ans=to_hex(binn);
	while(ans.size()>1 && ans[ans.size()-1]=='0')ans.erase(a.size()-1,1);
	reverse(ans.begin(),ans.end());
	cout<<ans;
	return 0;
}
2025/1/22 08:10
加载中...