将int转换为ASCII字符

我有

int i = 6; 

而且我要

 char c = '6' 

通过转换。 任何简单的方法来build议?

编辑:我也需要生成一个随机数,并转换为一个字符,然后添加一个“.txt”,并访问它在ifstream。

直截了当的方式:

 char digits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; char aChar = digits[i]; 

更安全的方式:

 char aChar = '0' + i; 

通用方式:

 itoa(i, ...) 

方便的方法:

 sprintf(myString, "%d", i) 

C ++方式:(取自Dave18的答案)

 std::ostringstream oss; oss << 6; 

老板的方式:

乔,给我写一个int转换器

Studboss方式:

char aChar ='6';

乔的方式:

char aChar ='6'; // int i = 6;

NASA的方式:

//等待卫星回复…

外星人的方式:'9'

//问候。

神的方式:

布鲁我build立了这个

彼得潘的方式:

 char aChar; switch (i) { case 0: aChar = '0'; break; case 1: aChar = '1'; break; case 2: aChar = '2'; break; case 3: aChar = '3'; break; case 4: aChar = '4'; break; case 5: aChar = '5'; break; case 6: aChar = '6'; break; case 7: aChar = '7'; break; case 8: aChar = '8'; break; case 9: aChar = '9'; break; default: aChar = '?'; break; } 

圣诞老人的方式:

 //Wait till Christmas! sleep(457347347); 

重力的方式:

//什么

'6'(泽西岛)Mikes'™方式:

//

SO方式:

伙计们,我该如何避免阅读C ++的初学者指南?

我的方式:

或高速公路。

评论:我已经添加了Handy方式和C ++方式(要有一个完整的集合),我把它保存为一个wiki。

编辑:满意?

这将只适用于整数0-9,但你的问题似乎表明,可能是足够的。

它通过将char'0 '0'的ASCII值添加到整数数字来工作。

 int i=6; char c = '0'+i; // now c is '6' 

例如:

 '0'+0 = '0' '0'+1 = '1' '0'+2 = '2' '0'+3 = '3' 

编辑

目前还不清楚你的意思,“为字母工作”? 如果你想要字母的第五个字母:

 int i=5; char c = 'A'-1 + i; // c is now 'E', the 5th letter. 

请注意,因为在C / Ascii中,A被认为是字母表的第0个字母,所以我做一个负数-1来补偿第5个字母的正常含义。

根据具体情况适当调整。
(和testing – testing!你写的任何代码)

只是供参考,如果你想多个单一数字的数字,你可以使用sprintf:

 char txt[16]; int myNum = 20; sprintf(txt, "%d", myNum); 

然后,第一个数字在txt [0]的char中,依此类推。

(这是C的方法,而不是C ++的方法,C ++的方法是使用stringstreams。)

这是我如何将数字转换为ASCII码。 0到9的hex代码是0x30-0x39。 6将是0x36。

 unsigned int temp = 6; or you can use unsigned char temp = 6; unsigned char num; num = 0x30| temp; 

这会给你6的ASCII码值。你对0-9的值也是一样的

将ASCII转换为数字值我想出了这个代码。

 unsigned char num,code; code = 0x39; // ASCII Code for 9 in Hex num = 0&0F & code; 

我做这个工作的方式是:

  char to int char var; cout<<(int)var-48; int to char int var; cout<<(char)(var|48); 

我写这些function的转换

 int char2int(char *szBroj){ int counter=0; int results=0; while(1){ if(szBroj[counter]=='\0'){ break; }else{ results*=10; results+=(int)szBroj[counter]-48; counter++; } } return results; } char * int2char(int iNumber){ int iNumbersCount=0; int iTmpNum=iNumber; while(iTmpNum){ iTmpNum/=10; iNumbersCount++; } char *buffer=new char[iNumbersCount+1]; for(int i=iNumbersCount-1;i>=0;i--){ buffer[i]=(char)((iNumber%10)|48); iNumber/=10; } buffer[iNumbersCount]='\0'; return buffer; } 

“我有int i = 6;我想通过转换得到char c ='6',任何简单的build议方式?

只有10个数字。 所以编写一个函数,它接受0-9的整数并返回ascii码。 只需在ascii表中查找,然后使用ifs或select case来编写函数。

另一种方式,但不规范。

 int i = 6; char c[2]; char *str = NULL; if (_itoa_s(i, c, 2, 10) == 0) str = c; 

或者使用标准的c ++ stringstream

  std::ostringstream oss; oss << 6; 

如果你只需要0到255之间的小数字,我觉得这个function相当有用。 我用它来debugging/显示普通LCD中的字符variables。 msgvariables的长度应该是4。

 void debug_int8(char* msg, char number) { char digits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; char d2, d1, d0; d2 = number / 100; //most-significative digit d1 = (number - d2 * 100) / 10; d0 = number - d2 * 100 - d1 * 10; //least-significative digit msg[0] = digits[(short) d2]; msg[1] = digits[(short) d1]; msg[2] = digits[(short) d0]; msg[3] = '\0'; } 

我想那个

 std::to_string(i) 

可以做的工作,这是一个重载的函数,我可以是任何数字types

  A PROGRAM TO CONVERT INT INTO ASCII. #include<stdio.h> #include<string.h> #include<conio.h> char data[1000]= {' '}; /*thing in the bracket is optional*/ char data1[1000]={' '}; int val, a; char varray [9]; void binary (int digit) { if(digit==0) val=48; if(digit==1) val=49; if(digit==2) val=50; if(digit==3) val=51; if(digit==4) val=52; if(digit==5) val=53; if(digit==6) val=54; if(digit==7) val=55; if(digit==8) val=56; if(digit==9) val=57; a=0; while(val!=0) { if(val%2==0) { varray[a]= '0'; } else varray[a]='1'; val=val/2; a++; } while(a!=7) { varray[a]='0'; a++; } varray [8] = NULL; strrev (varray); strcpy (data1,varray); strcat (data1,data); strcpy (data,data1); } void main() { int num; clrscr(); printf("enter number\n"); scanf("%d",&num); if(num==0) binary(0); else while(num>0) { binary(num%10); num=num/10; } puts(data); getch(); } 

我检查我的编码和它的工作良好。如果它有帮助,请告诉我。