关于进制的问题,只要知道进制是怎么回事,剩下的事就是,如果有现成的函数,----拿来用啊!
没有 ----------自己写一个
这样就简单了!
在C语言中,输出: 十进制 %d
十六进制 %x
八 进制 %o
二进制没有给出相应的方法,所以如果需要输出2进制就得自己写函数实现(包括楼上说的什么5,26,...);
仓促之间写了一个例程,代码很烂,逻辑不严谨仅供参考:
只是说明一下问题,这个函数远没有达到应用的成度,是个通用型的,可以计算2,8,10进制的,甚至其他进制,比如12,24,60
等等有意义的进制转换
程序写的比较烂,毕竟这种转换用处不大,仅说明进制转换的问题,
程序代码:
[ 本帖最后由 Luminal 于 2011-8-25 18:34 编辑 ]
没有 ----------自己写一个
这样就简单了!
在C语言中,输出: 十进制 %d
十六进制 %x
八 进制 %o
二进制没有给出相应的方法,所以如果需要输出2进制就得自己写函数实现(包括楼上说的什么5,26,...);
仓促之间写了一个例程,代码很烂,逻辑不严谨仅供参考:
只是说明一下问题,这个函数远没有达到应用的成度,是个通用型的,可以计算2,8,10进制的,甚至其他进制,比如12,24,60
等等有意义的进制转换
程序写的比较烂,毕竟这种转换用处不大,仅说明进制转换的问题,
程序代码:#include <stdio.h>
int dectobinary(int num,int *ary,int system);
int main(){
int ary[16]={0};
int len=0;
len=dectobinary(23,ary,16);
for(len;len>-1;len--)
printf("%d",ary[len]);
printf("\n");
return 0;
}
//返回值是这个被转换后的数的位数;
//num 是要转换的10进制整数(没有考虑负数的情况)
//*ary是用来接受转换后的数的,是个int型数组,当然也可以用char型;
//system 是要转换的进制,2进制就是2,16进制就是16....
//返回值是转换后一共是多少位数-1,比如十进制3转换成2进制为111,是3位数,则返回3-1=2;
//所生成的数是反序的,输出时要反序输出的!
int dectobinary(int num,int *ary,int system){
int len=0;
int tempr=0;
tempr=num%system;
num=num/system;
*(ary++)=tempr;
len++;
while(num>1){
tempr=num%system;
num=num/system;
*(ary++)=tempr;
len++;
}
*(ary++)=num;
return len;
}[ 本帖最后由 Luminal 于 2011-8-25 18:34 编辑 ]










