本文主要是介绍itoa()函数,10进制转换到(2~36)进制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
先看下itoa()的函数说明吧:
功 能:把一整数转换为字符串
用 法:char *itoa(int value, char *string, int radix);
详细解释:itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写.
参数: value: 待转化的整数。
radix: 是基数的意思,即先将value转化为radix进制的数,范围介于2-36,比如10表示10进制,16表示16进制。
* string: 保存转换后得到的字符串。
返回值: char * : 指向生成的字符串, 同*string。
备注:该函数的头文件是"stdlib.h" (包含在iostream里面)
记住一点:itoa并不是一个标准的C函数,它是Windows特有的,如果要写跨平台的程序,请用sprintf。
是Windows平台下扩展的,标准库中有sprintf,功能比这个更强,用法跟printf类似。
虽然可能itoa无法使用,但是我们可以编写自己的itoa()函数,以下是实现源代码(来源网络):
- char*my_itoa(int num,char*str,int radix)
- {
- const char table[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" ;
- char*ptr=str ;
- bool negative=false ;
- if(num==0)
- {
- //num=0
- *ptr++='0' ;
- *ptr='/0' ;
- // don`t forget the end of the string is '/0'!!!!!!!!!
- return str ;
- }
- if(num<0)
- {
- //if num is negative ,the add '-'and change num to positive
- *ptr++='-' ;
- num*=-1 ;
- negative=true ;
- }
- while(num)
- {
- *ptr++=table[num%radix];
- num/=radix ;
- }
- *ptr='/0' ;
- //if num is negative ,the add '-'and change num to positive
- // in the below, we have to converse the string
- char*start=(negative?str+1:str);
- //now start points the head of the string
- ptr--;
- //now prt points the end of the string
- while(start<ptr)
- {
- char temp=*start ;
- *start=*ptr ;
- *ptr=temp ;
- start++;
- ptr--;
- }
- return str ;
- }
程序的测试如下:
- #include <iostream>
- using namespace std;
- int main()
- {
- int a=15;
- char str[100];
- my_itoa(a,str,15);
- cout<<str<<endl;
- return 0;
- }
对于已经转换到指定进制的数,此时是字符串,我们可以再转换为整型(2~10进制才可以),比如:
- int main()
- {
- int a=15;
- char str[100];
- int n=atoi(my_itoa(a,str,2));
- cout<<n<<endl;
- return 0;
- }
备注:atoi()是标准库里面的函数,在C/C++语言参考函数里面有,而itoa()却没有,对此我们最好自己实现itoa()函数。
这篇关于itoa()函数,10进制转换到(2~36)进制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!