源码)"/>
C语言进制之间的转换(源码)
以下代码中提供两个函数,用于将十进制转换和其他进制和其他进制转换为十进制
//Info:
// 提供2、8、10、16进制之间相互转换的两个函数(正整数)
// 更新日期:2020.2.23#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>//num为要转换的十进制数,format是要转换的目标进制,结果以字符串s形式表示
void Decto(int num,int format,char *s);
//num是要转换的数,format是要转换的原进制,结果以长整型sum表示
void toDec(char* num, int format, long* sum);int main(int argc,char **argv)
{char str[128]={0};//str用于储存结果//从十进制转换为其他进制测试//Decto(atoi(argv[1]), atoi(argv[2]), str);//printf("%s\n",str);//其他进制转换为十进制测试long sum=0;toDec(argv[1], atoi(argv[2]), &sum);printf("%ld\n",sum);return 0;
}//使用辗转相除法,将十进制转换为其他进制
void Decto(int num,int format,char *s)
{int r[128];//记录余数char stor[] = {"0123456789ABCDEF"};//索引库int i = 0;//开始辗转相除while(num>=format){s[i] = stor[num%format];i++;num = num / format;}s[i] = stor[num];s[i+1] = '\0';//将字符串内元素倒序for(int j=0; j<strlen(s)/2; j++){char tem = s[j];s[j] = s[ strlen(s)-j-1 ];s[ strlen(s)-j-1 ] = tem;}return ;
}//二进制转十进制,
void toDec(char* num, int format, long* sum)
{char stor[] = {"0123456789ABCDEF"};//索引库//判断要转换的数字是否有误for(int i=0; i<strlen(num); i++){int tem = 0;for(int j=0; j<strlen(stor); j++){if(num[i]==stor[j]){tem = j;break;}}//若要转换的数中有超过进制的数则输出error后退出if(tem>=format){printf("error\n");return;}}//开始转换for(int i=0; i<strlen(num); i++){int tem = 0;for(int j=0; j<strlen(stor); j++){if(num[i]==stor[j]){tem = j;break;}}*sum += tem*pow(format,strlen(num)-1-i);}return ;
}
更多推荐
C语言进制之间的转换(源码)
发布评论