C语言实现进制转换(详)

目录:
(一)任意进制转十进制
(二)十进制转任意进制
(三)二进制转十六进制(重难点)

 

(一)任意进制转十进制

#include <stdio.h>
int main(){
	int x,p;   //x输入数字  p该数的进制数  
	scanf("%d",&x);
	scanf("%d",&p);
	int y=0,product=1;
	while(x!=0){
		y=y+(x%10)*product;
		x=x/10;
		product=product*p;
	}
	printf("%d",y);
	return 0;
} 

(二)十进制转任意进制
注意:这里只能用do...while(原因:如果输入的是0,那么我们希望a[0]=0)

#include <stdio.h>
int main(){
	int x,p; //x为十进制数,p为目标进制大小 
	scanf("%d",&x);
	scanf("%d",&p);
	int a[100]; //存放余数 
	int count=0;
	do{
		a[count++]=x%p;
		x=x/p;
	}while(x!=0);//当商不为0时进行循环 
	
	for(int i=count-1;i>=0;i--){
		printf("%d",a[i]);
	}
} 

(三)二进制转十六进制
主要思路:确定十六进制数组大小->确定二进制数数组大小->二进制每过4位存入十六进制1位

思路:输入的二进制数可能能不是4的整数倍,那么我们该如何处理呢?我们知道二进制不够4位,用0占位。于是我先将输入的二进制数除以10000取余(看4位),这样就确定十六进制数组的大小,反过*4来就知道了二进制数的大小。
 

#include <stdio.h>
#include <math.h>
int main(){
	//输入2进制数 
	int x;
	scanf("%d",&x); 
	
	//确定:16进制数组大小size与2进制数组大小size*4.
	int X=x;
	int size=0; 
	while(true){
		if(X%10000!=0){ //采取看4位二进制的方法 
			size++;
			X=X/10000;
		}else{
			break;
		} 
	}
	char tt[size];   //16进制数数组 
	int t[size*4]; //2进制数数组 
      //存入 
	int sum=0;
	int count=0;
	for(int i=0;i<sizeof(t)/sizeof(int);i++){
		t[i]=x%10;
		x=x/10;
		sum=sum+t[i]*pow(2,count);
		count++;
		if(count%4==0){
			if(sum>=10){
				tt[--size]=65+(sum-10);  //字符'A'的ascii码为65 
			}else{
				tt[--size]='0'+sum;    
			}
			count=0;
			sum=0;
		}	
	}
	for(int i=0;i<sizeof(tt);i++){
		printf("%c",tt[i]);
	}
	return 0;
} 


 

引用[1]:这段代码是一个C语言程序,用于将二进制的字符串转换为十进制的整数。它定义了一个函数bintodec,该函数接受一个二进制字符串作为参数,并返回转换后的十进制整数。在函数内部,它使用了一个循环来遍历二进制字符串的每个字符,并根据字符的值计算出对应的十进制数。最后,它将所有的十进制数相加得到最终的结果。在主函数中,它首先接受用户输入的二进制字符串,然后调用bintodec函数将其转换为十进制数并输出结果。[1] 引用[2]:这段代码是另一个C语言程序,用于将二进制数转换为十进制整数。它首先接受用户输入的二进制数的长度,然后接受用户输入的二进制数。接下来,它使用一个循环来遍历二进制数的每一位,并根据位的位置和值计算出对应的十进制数。最后,它将所有的十进制数相加得到最终的结果并输出。[2] 引用[3]:在实际开发中,我们可以使用0和1的字符串来表示信息。例如,某个设备有八个传感器,每个传感器的状态用1表示正常,用0表示故障,可以用一个二进制字符串来表示它们的状态。而将二进制数转换为十进制数可以帮助我们更好地理解和处理这些信息。[3] 问题: 如何在C语言中将二进制数转换为十进制数? 回答: 在C语言中,可以使用不同的方法将二进制数转换为十进制数。一种方法是使用循环遍历二进制数的每一位,并根据位的位置和值计算出对应的十进制数,然后将所有的十进制数相加得到最终的结果。另一种方法是使用字符串处理函数,将二进制字符串转换为十进制整数。以上引用的两段代码分别展示了这两种方法的实现。你可以根据自己的需求选择其中一种方法来进行二进制转换十进制的操作。
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值