博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
进制转换问题求解
阅读量:6677 次
发布时间:2019-06-25

本文共 1179 字,大约阅读时间需要 3 分钟。

 

#include 
#include
#include
/** * 总体思想:采用一个数组存放基数"0123456789ABCDEF" * 即数字的每一位由上述数组的元素组成 * 如一个数表示为"15F",则该数字实际为:1 5 15 * 这样的话处理进制转换问题就和大整数运算问题一样了。 *///将数字转换为字符串形式int N2Str(int value,int N,char *str){ char temp[10],*Bits="0123456789ABCDEF"; int Len; if(value<0||N<2||N>16||str==NULL) return 0; if(value>=N) {
//递归按位转换 if(!N2Str(value/N,N,str)) return 0; } Len=strlen(str); str[Len]=Bits[value%N]; str[Len+1]='\0'; return 1;}//M进制转换为N进制int M2N(int M,char *MStr,int N,char *NStr){ int value=0,bit; if(M<2||M>16||MStr==NULL||N<2||N>16||NStr==NULL) return 0; while(*MStr) {
//该过程类似于大整数运算的运算进位减位问题 value*=M; if(*MStr>='0'&&*MStr<='9') bit=*MStr-'0'; else if(*MStr>='a'&&*MStr<='f') bit=*MStr-'a'+10; else if(*MStr>='A'&&*MStr<='F') bit=*MStr-'A'+10; if(bit>=M) return 0; value+=bit; MStr++; } *NStr='\0'; N2Str(value,N,NStr); return 1;}int main(void){ char *in="123456"; char out[50]; if(M2N(8,in,16,out)) printf("%s->%s\n",in,out); else printf("illegal input data\n"); system("pause"); return 0;}

转载地址:http://bjyao.baihongyu.com/

你可能感兴趣的文章
zabbix
查看>>
我的友情链接
查看>>
linux学习笔记八:改为中文环境
查看>>
2. 方法覆盖
查看>>
ERROR 1093 (HY000): You can't specify target table 'bm_area' for update in FROM clause
查看>>
利用B2B做外贸需掌握的报价技巧
查看>>
Git回滚到指定版本
查看>>
secureCRT
查看>>
我的友情链接
查看>>
《统一沟通-微软-实战》-6-部署-5-边缘服务器-2012-07-12-2-A
查看>>
Yii框架官方指南系列18——使用表单:创建动作
查看>>
Yii框架官方指南系列34——扩展Yii:使用扩展
查看>>
win8 打开 telnet
查看>>
SpringMVC源码之参数解析绑定原理
查看>>
jstree节点展开设置
查看>>
vs 的git插件
查看>>
Android Studio试用文档
查看>>
SQL2005学习(二十三),Select用法三Where
查看>>
SDWebImage原理
查看>>
SpringMvc解决跨域问题[ POST ]
查看>>