#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void intToBase(int number, int base, char *output) {
const char digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char buffer[65]; // Enough for base 2 of a 64-bit number
int i = 0;
if (number == 0) {
strcpy(output, "0");
return;
}
int isNegative = number < 0;
unsigned int n = isNegative ? -number : number;
while (n > 0) {
buffer[i++] = digits[n % base];
n /= base;
}
if (isNegative) {
buffer[i++] = '-';
}
buffer[i] = '\0';
// Reverse the string
for (int j = 0; j < i; j++) {
output[j] = buffer[i - j - 1];
}
output[i] = '\0';
}
int main() {
int number = 255;
char result[65];
int bases[] = {2, 8, 16, 36};
for (int i = 0; i < 4; i++) {
int base = bases[i];
intToBase(number, base, result);
printf("%d in base %d = %s\n", number, base, result);
}
return 0;
}
/*
run:
255 in base 2 = 11111111
255 in base 8 = 377
255 in base 16 = FF
255 in base 36 = 73
*/