#include <stdio.h>
#include <stdint.h>
void print_hex(uint8_t num){
char val;
switch(num){
case 10:
val = 'A';
break;
case 11:
val = 'B';
break;
case 12:
val = 'C';
break;
case 13:
val = 'D';
break;
case 14:
val = 'E';
break;
case 15:
val = 'F';
break;
default:
val = '0' + num;
}
printf("%c", val);
}
void print_base(uint16_t num, uint8_t base) {
if (num == 0){
printf("0");
return;
}
if (base == 2){
size_t size;
bool valid = false;
for(size_t i=15; i<16; i--){
bool bit = num>>i & 1;
if(bit){
valid = true;
}
if (valid){
printf("%c", bit?'1':'0');
}
}
}
if(base == 16){
uint8_t left = (num>>4) & 0b1111;
uint8_t right = num & 0b1111;
print_hex(left);
print_hex(right);
}
}
int main() {
uint16_t num;
uint8_t base;
scanf("%hu %hhu", &num, &base);
print_base(num, base);
return 0;
}
Input
10 2
Expected Output
1010