#include <iostream>
#include <string>
#include <algorithm>
std::string intToBase(int number, int base) {
if (base < 2 || base > 36) {
throw std::invalid_argument("Base must be in the range [2, 36]");
}
const char digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
bool isNegative = (number < 0 && base == 10); // Handle negative numbers for base 10
number = std::abs(number);
std::string result;
do {
result += digits[number % base];
number /= base;
} while (number > 0);
if (isNegative) {
result += '-';
}
std::reverse(result.begin(), result.end());
return result;
}
int main() {
int number = 255;
std::cout << number << " in base 2 = " << intToBase(number, 2) << std::endl;
std::cout << number << " in base 8 = " << intToBase(number, 8) << std::endl;
std::cout << number << " in base 16 = " << intToBase(number, 16) << std::endl;
std::cout << number << " in base 36 = " << intToBase(number, 36) << std::endl;
}
/*
run:
255 in base 2 = 11111111
255 in base 8 = 377
255 in base 16 = FF
255 in base 36 = 73
*/