C语言——二进制转十六进制

导读:本篇文章讲解 C语言——二进制转十六进制,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

Description  

输入一个二进制的数,要求输出该二进制数的十六进制表示。在十六进制的表示中,A~F表示10~15。

Input  

第一行是测试数据的组数n,后面跟着n行输入。每组测试数据占一行,包括一个以0和1组成的字符串,字符串长度至少是1,至多是10000。

Output  

 n行,每行输出对应于一个输入,表示该二进制数转化成十六进制数的结果。

Sample Input  

2
100000
111

Sample Output  

20
7

#include<stdio.h>
#include<string.h>

int main(){
	int N,n,k,t,i,j,m;
	char a[10005];
	int b[10005]={0};
	scanf("%d",&N);
	while(N--){
		scanf("%s",&a);
		n=strlen(a);
		for(i=0;i<n;i++)
			b[i]=0;
		k=0;
		t=1;
		m=0;
		for(i=n-1;i>=0;i--){
	    	b[k]+=(a[i]-'0')*t;
			t*=2;
			m++;
			if(m%4==0){
				k++;
				t=1;
			}
		}
		for(i=0;i<n;i++){
			if(b[i]>=10){
				switch(b[i]){
				case 10 : b[i]='A'; break;
				case 11 : b[i]='B'; break;
				case 12 : b[i]='C'; break;
				case 13 : b[i]='D'; break;
				case 14 : b[i]='E'; break;
				case 15 : b[i]='F'; break;
				}
			}
		}
		for(i=k;i>=0;i--){
			if(b[i]!=0){
				for(j=i;j>=0;j--){
			if(b[j]>=65 && b[j]<=70 )
				printf("%c",b[j]);
			else printf("%d",b[j]);
				}
				break;
			}
		}
			if(i==-1) printf("0");
		printf("\n");
	}
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/69393.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!