#include <stdio.h>
#include <stdint.h>
// Print num in binary or hex without using itoa/sprintf
void print_base(uint16_t num, uint8_t base) {
if (num == 0) {
printf("0");
return;
}
char digits[17] = "0123456789ABCDEF";
char buffer[20]; // Enough to hold result
int i = 0;
while (num > 0) {
buffer[i++] = digits[num % base];
num /= base;
}
// Print in reverse
for (int j = i - 1; j >= 0; j--) {
putchar(buffer[j]);
}
}
int main() {
uint16_t num;
uint8_t base;
scanf("%hu %hhu", &num, &base);
print_base(num, base);
return 0;
}
Why This Matters in Firmware?
Logic Summary
Input
10 2
Expected Output
1010