利用指针将16进制字符串(有效十六进制不超过4位)转换为二进制字字符串输出。

【进制转换】

利用指针将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;
 } 

猜你喜欢

转载自blog.csdn.net/qq_51366188/article/details/110008913