关于进制的问题,只要知道进制是怎么回事,剩下的事就是,如果有现成的函数,----拿来用啊!
没有 ----------自己写一个
这样就简单了!
在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 编辑 ]