C++任意字符的转换

如果有错请评论指出;参考:https://blog.csdn.net/langmanqishizaijia/article/details/51087443

#include<iostream>
#include<bitset>
#include<string>
using namespace std;

//in,是输入进来的数
//out是输出的字
//begin表示输入进制
//end表示输出的进制

void change(string in,string &out, long begin,long end){
	
	//首先转化成十进制;
	int sum = 0;
	for (int i = 0; i < in.length;i++){
	
		long t = in[i];
		if (t>=0 && t<=9){
			sum = t + sum*begin;
		}
		else sum = (t - 'A' + 10) + sum*begin;
	}

    //十进制转成end进制
	out = "";
	while (1){
		long j = sum%end;
		sum /= end;
		if (j <= 9) out = to_string(j) + out;
		else out = to_string(j - 10 + 'A' ) + out;
		if (num == 0)break;
	}


	cout << sum;
}

int main(){
	
	/*进制输出
	int i;
	cin >> i;
	cout << std::hex << i<<endl;
	cout << std::oct << i << endl;
	cout << std::dec << i << endl;
	cout << bitset<8>(i) << endl;
    */
	string in,out;
	long begin, end;
	
	while (cin >> in >> begin>>end){
		change(in, out, begin, end);
		cout << out;
	}
	
	return 0;
}
发布了28 篇原创文章 · 获赞 6 · 访问量 2862

猜你喜欢

转载自blog.csdn.net/weixin_45621658/article/details/102873726