前言
C提供了把字符串转化为整形数的函数atoi()和把整形数转化为字符串的函数itoa()
itoa()函数的原型为: char itoa( int value, char string,int radix);
itoa()函数有3个参数:第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串,第三个参数是转换数字时所用的基数。在例中,转换基数为10。10:十进制……
itoa并不是一个标准的C函数,它是Windows特有的,如果要写跨平台的程序,请用sprintf。
是Windows平台下扩展的,标准库中有sprintf,功能比这个更强,用法跟printf类似:
char str[255];
sprintf(str, “%x”, 100); //将100转为16进制表示的字符串。
atoi()函数的原型为:int atoi(const char * string)
atoi()函数有1个参数,就是源字符串,返回值为转化结果
实现自己的itoa()和atoi()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
| #include <iostream>
#include <math.h>
using namespace std;
/**
* string 转化为 int
**/
int Atoi(const char* string){
size_t wei = strlen(string);
int num = 0;
for (int i=0; i<wei; i++) {
num = num*10+(string[i]-'0');
}
return num;
}
/**
* 计算位数
**/
int wei(int num,int radix){
int count = 0;
while (num>0) {
num = num/radix;
count++;
}
return count;
}
/**
* int 转化为 string
* num 待转化的数字
* str 写入转化结果的目标字符串
* radix 转换数字时所用的基数(进制)
**/
void Itoa(int num,char str[],int radix){
int size = wei(num,radix);
memset(str, '\0', size);
int a = pow(radix, size-1);
int tmp =num;
for (int i=0; i<size; i++) {
str[i] = tmp/a%radix+'0';
a = a/radix;
}
}
int main(int argc, const char * argv[]) {
//cout<<Atoi("1234")<<endl;
char str[1000];
Itoa(90, str,10);
printf("%s\n",str);
char str2[1000];
sprintf(str2, "%d",10);
printf("%s\n",str2);
return 0;
}
|