首页 > 代码库 > C++中 int char 的相互转换

C++中 int char 的相互转换

特别注意char 只能处理单个字符如,1,2,3到9等,不能接收11,11等多位数字 

// 取到一个char的ASCII值

    char c=‘A‘;

    int i=c;

    printf("%d",i);

    //值为数字的char转为对应数字

    char c1=‘3‘;

    int c1int=c1-‘0‘;

    //int转为char型

    int i2=4;

    char c2=i2+‘0‘;

    printf("%c",c2);

一个数(而不是一个数字) 如何转为char str[]呢?

代码来自 http://bbs.csdn.net/topics/70251034

    char tmp[16];
    int isNegtive = 0;
    int index;

    if(m < 0)
    {
        isNegtive = 1;
        m = - m;
    }

    tmp[15] = ‘\0‘;
    index = 14;
    do 
    {
        tmp[index--] = m % 10 + ‘0‘; //+‘0‘ 不能少  否则存入的ASCII值
        m /= 10;
    } while (m > 0);

    if(isNegtive)
        tmp[index--] = ‘-‘;
    
    //这里如果不愿调用库函数,可以使用for循环拷贝字符
    strcpy(buf, tmp + index + 1);

    return buf;

如果涉及到较复杂的转换可以采用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    int n = 65535;
    char t[256];
    string s;
 
    sprintf(t, "%d", n);
    s = t;
    cout << s << endl;
 
    return 0;
}

或者

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//第二种方法
#include <iostream>
#include <string>
#include <strstream>
using namespace std;
 
int main()
{
    int n = 65535;
    strstream ss;
    string s;
    ss << n;
    ss >> s;
    cout << s << endl;
 
    return 0;
}