Convertir un caractère int en ASCII

j’ai

int i = 6; 

et je veux

 char c = '6' 

par conversion. Un moyen simple de suggérer?

EDIT: j’ai aussi besoin de générer un nombre aléatoire et de le convertir en un caractère, puis d’append un “.txt” et d’y accéder dans un ifstream.

Manière simple:

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

Manière plus sûre:

 char aChar = '0' + i; 

Manière générique:

 itoa(i, ...) 

Manière pratique:

 sprintf(mySsortingng, "%d", i) 

Façon C ++: (tiré de la réponse de Dave18)

 std::ossortingngstream oss; oss << 6; 

Manière Boss:

Joe, écris-moi un convertisseur d'int pour char

Manière Studboss:

char aChar = '6';

La façon de Joe:

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

La façon de la NASA:

// En attente de réponse du satellite ...

Alien's way: '9'

//Salutations.

La voie de Dieu:

Bruh j'ai construit cela

La voie de Peter Pan:

 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; } 

La manière du père Noël:

 //Wait till Christmas! sleep(457347347); 

La voie de la gravité:

//Quelle

Mikes '™ façon' 6 '(Jersey):

//

SO façon:

Les gars, comment éviter de lire le guide du débutant en C ++?

Ma façon:

ou l'autoroute.

Commentaire: J'ai ajouté le mode Handy et le mode C ++ (pour avoir une collection complète) et je l'enregistre en tant que wiki.

Edit: satisfait?

Cela ne fonctionnera que pour les int-digits 0-9, mais votre question semble suggérer que cela pourrait suffire.

Cela fonctionne en ajoutant la valeur ASCII du caractère '0' au chiffre entier.

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

Par exemple:

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

modifier

Ce que vous entendez par “travailler pour les alphabets” n’est pas clair? Si vous voulez la 5ème lettre de l’alphabet:

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

Notez que dans C / Ascii, A est considéré comme la 0ème lettre de l’alphabet, je fais un moins-1 pour compenser le sens normalement compris de la 5ème lettre.

Ajustez en fonction de votre situation spécifique.
(et test-test-test! tout code que vous écrivez)

Juste pour info, si vous voulez plus que des nombres à un seul chiffre, vous pouvez utiliser sprintf:

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

Ensuite, le premier chiffre est dans un caractère à txt [0], etc.

(Il s’agit de l’approche C, pas de l’approche C ++. La méthode C ++ consisterait à utiliser des chaînes de caractères.)

Ma façon de faire ce travail est la suivante:

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

Et j'écris ces fonctions pour les conversions

 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; } 

C’est ainsi que j’ai converti un numéro en code ASCII. 0 si 9 en code hexadécimal est 0x30-0x39. 6 serait 0x36.

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

cela vous donnera la valeur ASCII pour 6. Vous faites la même chose pour 0 – 9

pour convertir ASCII en une valeur numérique, je suis venu avec ce code.

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

“J’ai int i = 6 et je veux un caractère c = ‘6’ par conversion. Un moyen simple de suggérer?”

Il n’y a que 10 numéros. Donc, écrivez une fonction qui prend un int de 0 à 9 et retourne le code ascii. Il suffit de chercher dans une table ascii et d’écrire une fonction avec ifs ou un cas sélectionné.

Voie alternative, mais non standard.

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

Ou en utilisant la chaîne standard c ++

  std::ossortingngstream oss; oss << 6; 

je suppose que

 std::to_ssortingng(i) 

pourrait faire le travail, c’est une fonction surchargée, je pourrais être n’importe quel type numérique

  A PROGRAM TO CONVERT INT INTO ASCII. #include #include #include 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(); } 

Je vérifie mon code et son bon fonctionnement. Je sais si c’est utile. Merci.