C语言进制转换(未完成)

这是半成品,可以转换一些较小的数,本人技术不精,不能用long int ,所以数字大了会溢出,正在改进中,还请各位大佬指教。

#include<stdio.h>
#include<math.h>
#include<string.h>
unsigned long long int dtob(int x);
int btod(int x);
int btoo(int x);
int main()
{
	int m;
	unsigned long long x,y;
    printf("输入几转几:\n例如输入102就代表将输入的十进制数转化为二进制数\n");
	scanf("%d",&m);
	printf("输入数据:\n");
	scanf("%lld",&x);
switch(m)
{
case 1610:y=(int)x;break;
case 168:
case 162:
case 1016:
case 108:
case 102:y=dtob(x);printf("%lld",y);break;
case 816:
case 810:
case 82:
case 216:y=btod(x);printf("%X",y);break;
case 210:y=btod(x);printf("%d",y);break;
case 28:y=btoo(x);printf("%d",y);break;
}
return 0;
} 
unsigned long long int dtob( int x)//自定义十进制转二进制函数 ,这里使用int来表示二进制的位数,结果将受到位数的限制 
{
 int y=0,i,s=0;
 unsigned long long z=0;
for (i=0;x!=0;i++)
{s=x/2;
y=x%2;
z+=y*pow(10,i);
x=s;
}
return z;
}
int btod(int x)//自定义二进制转十进制函数 
{
int i,z=0,w=0,l;
l=sizeof(x);
for (i=0;i<l;i++)
{
w=x%10;
z+=w*pow(2,i);
x/=10;
}
return z;
}
int btoo(int x)//自定义二进制转八进制函数 
{
int i,z=0,w=0,l;
l=sizeof(x);
for (i=0;i<l;i++)
{
w=x%1000;
z+=btod(w)*pow(10,i);
x/=1000;
}
return z;
}


显而易见,由于C语言编译器的限制,在用unsigned long long int输出二进制时,还是会收到位数限制。所以,应该用更合适的方法来表示进制数,比如数组。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值