将100分别转换为2进制,8进制和16进制。
100 = 0110 0100b
100 = 0144
100 = 0x64
编写程序从键盘输入一个十进制数,分别输出其2进制,8进制及16进制。
#include <stdio.h>
#include <string.h>
void revert(char *buf)
{
int i = 0, j = strlen(buf) - 1;
int tmp;
for(; i <= j; i++)
{
tmp = buf[j];
buf[j] = buf[i];
buf[i] = tmp;
}
}
void binary_convert(int x, char *buf)
{
int i = 0;
while(x)
{
buf[i++] = x % 2 + '0';
x /= 2;
}
buf[i] = '\0';
revert(buf);
}
void oct_convert(int x, char *buf)
{
int i = 0;
while(x)
{
buf[i++] = x % 8 + '0';
x /= 8;
}
buf[i] = '\0';
revert(buf);
}
void hex_convert(int x, char *buf)
{
int i = 0;
char *s = "0123456789abcdef";
while(x)
{
buf[i++] = s[x % 16];
x /= 16;
}
buf[i] = '\0';
revert(buf);
}
int main(int argc, const char *argv[])
{
char buf[20];
int num;
scanf("%d", &num);
binary_convert(num, buf);
printf("binary = %sb\n", buf);
oct_convert(num, buf);
printf("oct = 0%s\n", buf);
hex_convert(num, buf);
printf("hex = 0x%s\n", buf);
return 0;
}