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

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
#include
#include
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())进制转换_第1张图片

 

2.itoa()函数:

作用:

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

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

函数描述:

itoa(a,result,b); 

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

实例:

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

程序代码:

#include
#include
#include
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())进制转换_第2张图片

 

你可能感兴趣的:(#,算法小技巧,算法技巧常用工具)