C语言进制之间的转换(源码)

编程入门 行业动态 更新时间:2024-10-07 02:27:18

C语言进制之间的转换(<a href=https://www.elefans.com/category/jswz/34/1770099.html style=源码)"/>

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语言进制之间的转换(源码)

本文发布于:2024-03-04 11:31:06,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1709156.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:源码   语言

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!