类型转换:char / char*/ int

类型转换:char / char*/ int

Mar 5, 2014
Coding
C++

char 转 int #

char类型的数字 ‘0’ – ‘9’,转化为 int 类型的数字0 – 9

//方法:通过 -'0' 实现
char ch='9';
int n = ch - '0';

char类型直接转int时,int型变量的值等于char型字符的ASCII码值。如上述代码中,ch会被转化为57(‘9’的ASCII码值),‘0’会被转化为48(‘0’的ASCII码)。所以n = 57-48 = 9, 刚好等于ch对应的数字。

int 转 char #

int类型的数字0-9,转化为char类型的数字'0’-‘9’

//方法:+'0'
int n = 9;
char ch = n+'0';
//char ch = (char)(n+((int)'0'));

在int类型变量后面+‘0’ ,然后直接转为char类型即可。第三行和第四行都能实现转换,后者是前者的详细描述。先将'0’转换为int型,即其对应的ASCII值48,然后+n,再将结果转换为该ASCII码对应的数字。(这利用了ASCII码中,0-9的数字是由小到大依次排放的)

int 转 char[] 或 char* #

将int类型的数字(可以是任意位数)转化到一个char类型的数组中。如将123 转换为'1’、‘2’、‘3’三个字符,并存放到char chs[3]中。

//方法1:sprintf
int n = 123;
char chs[3];
char p = (char)malloc(sizeof(char)*4);
sprintf(chs,"%d",n);
sprintf(p,"%d",n);

或者使用 itoa() 函数,不过itoa()不是标准的C或C++函数。推荐使用sprintf。

//方法2:itoa
int n = 123;
char chs[3];
char *p = (char*)malloc(sizeof(char)*4);
itoa(n,chs,10);
itoa(n,p,10);//10进制

char[] 或 char* 转 int #

将char类型数组转换为int类型。如char chs={‘1’, ‘2’, ‘3’} 转换为 int n=123。方法是使用atoi()函数。

//方法:atoi
char chs[3]={'1','2','3'};
char *p="123";
int n = atoi(chs);
int n1 = atoi(p);