【进制转换】
利用指针将16进制字符串(有效十六进制不超过4位)转换为二进制字字符串输出。
Talk is cheap, show me the code.
#include <stdio.h>
#include <string.h>
int main()
{
char StrHex[20], StrBin[17], ch; //十六进制和二进制数组
char *p, *q; //指向数组的指针
unsigned short t = 0; //用于临时存储十进制
int i;
gets(StrHex);
//第一步,十六进制->十进制
p = StrHex;
while(*p)
{
if (*p >= '0' && *p <= '9')
{
t = t * 16 + *p - '0';
}
else if (*p >= 'A' && *p <= 'F')
{
t = t * 16 + *p - 'A' + 10;
}
else if (*p >= 'a' && *p <= 'f')
{
t = t * 16 + *p - 'a' + 10;
}
p++;
}
printf("%hu\n", t); //输出十进制
//第二步,十进制->逆序二进制
for (p = StrBin; p < StrBin + 16; p++)
{
*p = t % 2 + '0';
t /= 2;
}
*p = '\0';
//准备步骤:通过循环使指针q指向 逆序二进制 的最后一位
q = StrBin;
while(*q)
{
q++;
}
q--;
//第三步,逆序二进制->正序二进制
p = StrBin;
while(p < q)
{
ch = *p;
*p = *q;
*q = ch;
p++;
q--;
}
p = StrBin;
puts(p); //输出二进制
return 0;
}