/var/log/soymsk

id:soy_msk


10進数->n進数

10進数->n進数(n = 2 ~ 35)の変換。ググッてもn進数というのはなかなかなかったので。STLは少しおおげさか。

const char *numset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWYZ";
void cardinal_encode(int num, int ocar) {
	if(num == 0) {cout << "0" << endl; return;}
	if(ocar > strlen(numset) || ocar < 2) return;
	vector<int> nl;
	
	while(num / ocar != 0) {
		nl.push_back(num % ocar);
		num /= ocar;
	}
	nl.push_back(num);
	reverse(nl.begin(), nl.end());
	for(unsigned int i = 0; i < nl.size(); i++){
		cout << numset[nl[i]];
	}
	return;
}