einen intwert ins equivalente char umwandeln.
-
Hallo, ich will einen int wert ins char packen. Das geht natürlich nur für 8 bit werte das ist mir bewusst. Ich habe jetzt bereits mehrere ansätze probiert und bin am verzweifeln^^.
Also wenn ich die Zahl kenne ist es einfach.:
char* tester = new char [2]; memset(tester,'\0',2) ; memset(tester, 49, 1);So in char ist nun der wert 40 (was der zahl eins entsprechen würde im ASCII).
Später kann ich dann durchs casten des chars wieder zu 49 kommen.
So nun habe ich aber eine int variable.
int a= 49 char* tester = new char [2]; memset(tester,'\0',2) ; memset(tester, a, 1);Das klappt leider nicht. Es wird nicht der 8 bit zahl 49 bzw ASCII wert 1 weggespeichert.
Hat jemand eine Idee, am besten mit stringstream oder strings, oder halt eben im guten alten C?
Am Ende will ich nur den Int wert als 8 Bit ASCII wert abspeichern, um es später zurückzucasten.
-
Du denkst VIEL zu kompliziert.
int intwert=40; char charwert = intwert;Außerdem gibt es keinen echten Unterschied zwischen char und int. Beides sind einfach nur Zahlen. Die einzigen beiden Unterschiede sind, dass char meistens weniger fassen kann. Das heißt char verhält sich zu int wie int zu long. Der andere Unterschied ist, dass für char eine Überladung der Ausgabefunktionen existiert, welche die Zahlen in einem char bei der Ausgabe als Zeichen ausgibt.
-
werd ich morgen gleich mal ausprobieren. Ich weiss das es keinen Unterschied gibt. Blos irgendwie werden zb. zweistelligen int nicht in ein char umgewandelt. Sprich int 52 sollte als 4 im char abgespeichert werden.
-
Nein das hast du falsch verstanden. Nach der ASCII-Tabelle entspricht 52 dem Zeichen '4'. Bei Ausgaben (z.B. mit cout) werden bei chars nicht die Integralwerte, sondern die entsprechenden Zeichen ausgegeben. Wenn du einem char z.B. 65 zuweist und ihn ausgibst, erhälst du ein A.
Wenn du wirklich von '4' auf 4 kommen willst, musst du einfach '0' abziehen und zurück entsprechend addieren:
char c = 52; // c == '4' int i = c - '0'; // i == 4 c = i + '0'; // c == '4' && c == 52
-
alles klar geht alles. Bin wohl irgendwie durcheinander geraten:). Bin auch auf string und stringstreams umgestiegen.