#include <stdio.h>
#include <stdint.h>
int dec2binary(uint16_t num, char str[])
{
int i = 0;
str[0] = '0';
str[1] = '\0';
if(!num)
{
str[0] = '0';
str[1] = '\0';
return 1;
}
while(num)
{
str[i++] = num % 2 + '0';
num /= 2;
}
str[i] = '\0';
return i;
}
int dec2hex(uint16_t num, char str[])
{
int i = 0;
char *literals = "0123456789ABCDEF";
if(!num)
{
str[0] = '0';
str[1] = '\0';
return 1;
}
while(num)
{
str[i++] = literals[num % 16];
num /= 16;
}
str[i] = '\0';
return i;
}
void print_base(uint16_t num, uint8_t base) {
char str[20];
int i;
int length;
char tmp;
if(base == 2)
length = dec2binary(num, str);
else
length = dec2hex(num, str);
i = 0;
length--;
while(i < length)
{
tmp = str[i];
str[i] = str[length];
str[length] = tmp;
i++, length--;
}
printf("%s", str);
}
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