1.strtol()函数:

作用:

它的功能是将一个任意1-36进制数转化为10进制数,返回是long int型。

long int strtol(const char *str, char **endptr, int base);

把参数 str 所指向的字符串根据给定的 base 转换为一个长整数(类型为 long int 型),base 必须介于 2 和 36(包含)之间,或者是特殊值 0。

函数描述:

long ret = strtol(n,&result,a);

n -- 要转换为长整数的字符串。

result -- 对类型为 char* 的对象的引用,其值由函数设置为 str 中数值后的下一个字符。

a -- 基数,必须介于 2 和 36(包含)之间,或者是特殊值 0。

 

实例:

输入进制大小和该进制下的数,输出转换成功后对应的十进制数:

#include<cstdio>
#include<cstdlib>
#include<cstring>
const int maxn = 10010;
int main(){
int a;
char n[maxn];
char *result;
scanf("%d%s",&a,n);
long ret = strtol(n,&result,a);
printf("%ld",ret);
return 0;
}

 

C/C++库函数(strtol()/itoa())进制转换_#include

 

2.itoa()函数:

作用:

它的功能是将一个10进制的数转化为n进制的值、其返回值为char型。(和上面的strtol效果相反)

char* itoa(int val,char* dst,int radix = 10);//定义的时候默认指定10进制

函数描述:

itoa(a,result,b);

a为要转换的数,result用来存储转换结果,b为要转变的进制数。

实例:

输入一个十进制的数和将要转变的进制,输出转换成功后对应的进制数:

程序代码:

#include<cstdio>
#include<cstdlib>
#include<cstring>
const int maxn = 10010;
int main(){
int a,b;
char result[maxn];
scanf("%d%d",&a,&b);
itoa(a,result,b);
printf("%s",result);
return 0;
}

运行结果:

C/C++库函数(strtol()/itoa())进制转换_进制_02