Einfacher Weg:
char digits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
char aChar = digits[i];
Sicherer Weg:
char aChar = '0' + i;
Generischer Weg:
itoa(i, ...)
Praktischer Weg:
sprintf(myString, "%d", i)
C ++ Weg: (entnommen aus Dave18 Antwort)
std::ostringstream oss;
oss << 6;
Boss Weg:
Joe, schreib mir einen Int-to-Char-Konverter
Studboss Weg:
char aChar = '6';
Joes Weg:
char aChar = '6'; // int i = 6;
Nasas Weg:
// Warten auf Antwort vom Satelliten ...
Aliens Weg: '9'
//Schöne Grüße.
Gottes Weg:
Bruh ich habe das gebaut
Peter Pans Weg:
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;
}
Der Weg des Weihnachtsmanns:
sleep(457347347);
Der Weg der Schwerkraft:
//Was
'6' (Jersey) Mikes '™ Weg:
// //
SO übrigens:
Leute, wie vermeide ich es, den Anfängerleitfaden für C ++ zu lesen?
Auf meine Art:
oder die Autobahn.
Kommentar: Ich habe Handy Way und C ++ Way hinzugefügt (um eine vollständige Sammlung zu haben) und speichere dies als Wiki.
Edit: zufrieden?
Dies funktioniert nur für die Int-Ziffern 0-9, aber Ihre Frage scheint darauf hinzudeuten, dass dies möglicherweise ausreicht.
Es funktioniert, indem der ASCII-Wert von char
'0'
zur Ganzzahl hinzugefügt wird .int i=6; char c = '0'+i; // now c is '6'
Zum Beispiel:
'0'+0 = '0' '0'+1 = '1' '0'+2 = '2' '0'+3 = '3'
Bearbeiten
Es ist unklar, was Sie unter "Arbeit für Alphabete" verstehen. Wenn Sie den 5. Buchstaben des Alphabets wollen:
int i=5; char c = 'A'-1 + i; // c is now 'E', the 5th letter.
Beachten Sie, dass ich in C / Ascii A als 0. Buchstaben des Alphabets betrachte und ein Minus-1 mache, um die normalerweise verstandene Bedeutung des 5. Buchstabens zu kompensieren.
Passen Sie es an Ihre spezifische Situation an.
(und test-test-test! jeder Code, den Sie schreiben)
quelle
Nur zu Ihrer Information, wenn Sie mehr als einstellige Zahlen möchten, können Sie sprintf verwenden:
char txt[16]; int myNum = 20; sprintf(txt, "%d", myNum);
Dann steht die erste Ziffer bei txt [0] in einem Zeichen und so weiter.
(Dies ist der C-Ansatz, nicht der C ++ - Ansatz. Der C ++ - Weg wäre die Verwendung von Stringstreams.)
quelle
snprintf
alssprintf
(überlegen Sie sich ein hypothetisches System mit 128-Bit-Ints oder was auch immer). +1 für einen Ansatz, der keine Zeichensätze enthält, bei denen die Zahlen nicht aufeinander folgen.Mein Weg, diesen Job zu machen, ist:
char to int char var; cout<<(int)var-48; int to char int var; cout<<(char)(var|48);
Und ich schreibe diese Funktionen für Konvertierungen:
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; }
quelle
So habe ich eine Zahl in einen ASCII-Code konvertiert. 0 obwohl 9 im Hex-Code ist 0x30-0x39. 6 wäre 0x36.
unsigned int temp = 6; or you can use unsigned char temp = 6; unsigned char num; num = 0x30| temp;
Dadurch erhalten Sie den ASCII-Wert für 6. Das Gleiche tun Sie für 0 - 9
Um ASCII in einen numerischen Wert umzuwandeln, habe ich mir diesen Code ausgedacht.
unsigned char num,code; code = 0x39; // ASCII Code for 9 in Hex num = 0&0F & code;
quelle
itoa ()
http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/
quelle
itoa
(nicht standardmäßige MS-Funktion) als auch für die Verknüpfung mit der möglicherweise schlechtesten Site für C- und C ++ - [falsche] Informationen.ich vermute das
std::to_string(i)
könnte die Arbeit erledigen, es ist eine überladene Funktion, es könnte ein beliebiger numerischer Typ wie int, double oder float sein
quelle
"Ich habe int i = 6; und ich möchte char c = '6' durch Konvertierung. Gibt es eine einfache Möglichkeit, dies vorzuschlagen?"
Es gibt nur 10 Zahlen. Schreiben Sie also eine Funktion, die ein int von 0-9 annimmt und den ASCII-Code zurückgibt. Schlagen Sie es einfach in einer ASCII-Tabelle nach und schreiben Sie eine Funktion mit ifs oder einem ausgewählten Fall.
quelle
Alternativer Weg, aber nicht Standard.
int i = 6; char c[2]; char *str = NULL; if (_itoa_s(i, c, 2, 10) == 0) str = c;
Oder mit Standard-C ++ - Stringstream
std::ostringstream oss; oss << 6;
quelle
'oss'
:)Während meiner College-Arbeit sammelte ich die gefundenen Daten und gab mir folgendes Ergebnis:
"Die Eingabe besteht aus einer einzelnen Zeile mit mehreren Ganzzahlen, die durch ein Leerzeichen getrennt sind. Das Ende des Eintrags wird durch die Nummer -1 gekennzeichnet, die nicht verarbeitet werden sollte."
#include <iostream> #include <cstdlib> using namespace std; int main() { char numeros[100]; //vetor para armazenar a entrada dos numeros a serem convertidos int count = 0, soma = 0; cin.getline(numeros, 100); system("cls"); // limpa a tela for(int i = 0; i < 100; i++) { if (numeros[i] == '-') // condicao de existencia do for i = 100; else { if(numeros[i] == ' ') // condicao que ao encontrar um espaco manda o resultado dos dados lidos e zera a contagem { if(count == 2) // se contegem for 2 divide por 10 por nao ter casa da centena soma = soma / 10; if(count == 1) // se contagem for 1 divide por 100 por nao ter casa da dezena soma = soma / 100; cout << (char)soma; // saida das letras do codigo ascii count = 0; } else { count ++; // contagem aumenta para saber se o numero esta na centena/dezena ou unitaria if(count == 1) soma = ('0' - numeros[i]) * -100; // a ideia é que o resultado de '0' - 'x' = -x (um numero inteiro) if(count == 2) soma = soma + ('0' - numeros[i]) * -10; // todos multiplicam por -1 para retornar um valor positivo if(count == 3) soma = soma + ('0' - numeros[i]) * -1; /* caso pense em entrada de valores na casa do milhar, deve-se alterar esses 3 if´s alem de adicionar mais um para a casa do milhar. */ } } } return 0; }
Die Kommentare sind auf Portugiesisch, aber ich denke, Sie sollten verstehen. Bei Fragen senden Sie mir eine Nachricht auf LinkedIn: https://www.linkedin.com/in/marcosfreitasds/
quelle
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(); }
Ich überprüfe meine Codierung und sie funktioniert gut. Lassen Sie mich wissen, ob sie hilfreich ist. Danke.
quelle