进制转换——10进制->任意(36以内)进制

    xiaoxiao2025-03-04  40

    把给定10进制正整数转换成任意进制,并以字符串形式输出。

    核心算法:对进制取余,丢弃最低位,循环

    #include <stdio.h> #include <math.h> #include <string.h> //10进制转任意小于10的进制 void DecToArbitrary(char *str,int n,int radix) { int num=0; int i=0; while(n!=0) { num+=(n%radix)*(int)pow(10.0,i); n/=radix; ++i; } sprintf(str,"%d",num); } void StrReverse(char *str) { char tmp; int len=strlen(str); for(int i=0,j=len-1; i<=j; i++,j--) { tmp = str[i]; str[i] = str[j]; str[j]= tmp; } str[len]='\0'; } //十进制转任意进制(小于等于36) void DecToArbitrary2(char *str,int n,int radix) { int i=0; char ch[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; while(n!=0) { str[i++]=ch[(n%radix)]; n/=radix; } StrReverse(str); } int main() { char str[100]=""; DecToArbitrary2(str,16,16); printf("%s\n",str); return 0; }

     

    最新回复(0)