#include <iostream>
#include <string>
#include <algorithm>
std::string to_base(unsigned int n, unsigned int base) {
static const std::string digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
if (base < 2 || base > 36)
throw std::invalid_argument("Base must be between 2 and 36");
if (n == 0)
return "0";
std::string result;
while (n > 0) {
unsigned int remainder = n % base;
result.push_back(digits[remainder]);
n /= base;
}
std::reverse(result.begin(), result.end());
return result;
}
int main() {
try {
unsigned int number = 255;
std::cout << number << " in base 2 = " << to_base(number, 2) << "\n";
std::cout << number << " in base 8 = " << to_base(number, 8) << "\n";
std::cout << number << " in base 16 = " << to_base(number, 16) << "\n";
std::cout << number << " in base 36 = " << to_base(number, 36) << "\n";
}
catch (const std::exception& ex) {
std::cerr << "Error: " << ex.what() << "\n";
}
}
/*
run:
255 in base 2 = 11111111
255 in base 8 = 377
255 in base 16 = FF
255 in base 36 = 73
*/