进制互换
一个简单的进制之间的转换,代码如下:
#include <stdio.h>
#include <string.h>
void main()
{
char aaa[5];
unsigned char bbb, i, k, Err = 0;
long unsigned int nnn = 0;
printf(" \nplease input your number (0~9, A~Z): ");
gets(aaa);
printf(" \nplease input the Hex (2,8,4,10,16): ");
scanf("%d", &bbb);
for (i = 0; i < strlen(aaa); i++) {
if (aaa[i] >= '0' && aaa[i] <= '9') k = aaa[i] - 48;
if (aaa[i] >= 'a' && aaa[i] <= 'z') k = aaa[i] - 87;
if (k < bbb)
nnn = nnn * bbb + k;
else {
Err = 1;
break;
}
}
if (!Err) {
printf ("\n 2,4,8,10,16Hex,The output is:");
printf ("\n\n 2: ");
for (i = 32; i > 0; i--) printf ("%d", (nnn >> (i - 1)) & 1);
printf ("\n\n 4: ");
for (i = 16; i > 0; i--) printf ("%d", (nnn >> (2 * (i - 1))) & 3);
printf ("\n\n 8: %o ", nnn);
printf ("\n\n 10: %u ", nnn);
printf ("\n\n 16: %x \n\n", nnn);
}
else printf ("input error ! \n");
system("pause");
}
其中红色部分该如何解释呢?
[解决办法]
因为十六进制,十进制,八进制都可以通过printf去直接打印出来,即对应%x/%o/%d,但是二进制和四进制没有对应的%。。。