skiddoo Geschrieben 29. Mai 2001 Teilen Geschrieben 29. Mai 2001 wie kann ich in c ein integer wert in einen char umwandeln? danke cu mohamet [ 29. Mai 2001: Beitrag editiert von: mohamet ] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
toosten Geschrieben 29. Mai 2001 Teilen Geschrieben 29. Mai 2001 Wenn du den int-wert als ascII-zeichen in eine datei speichern willst mach es mit fprintf() ansonsten: int zahl = 2000; char stringzahl[20]; //maximale länge von 19 ziffern int i=18; //letzte ziffer an pos 18 stringzahl[19]=0; //pos nach letzter ziffer muß 0 sein (stringabschluß) for (;zahl>0;i--) //solange zahl >0 { stringzahl=zahl%10+'0'; //ziffer zu zeichen und in den string zahl=zahl/10; //zahl /10 (rest verschwindet bei int) } i++; //durch schleife eine pos zu weit vorn //stringzahl+i= stringanfang Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mom Geschrieben 30. Mai 2001 Teilen Geschrieben 30. Mai 2001 Hi, zum Umwanden eines int in eine char* gibt mehrere Möglichkeiten: char s_Str[20]=""; int i_int=5; // 1. sprintf gehört meines Wissens zu stdio.h sprintf(s_Str,"%d",i_int); // 2. itoa gehört glaub ich zu stdlib.h itoa(s_Str,10,i_Int); // Bzw. da du eigentlich auf char wandeln willst: s_Str[0]=(char)i_Int; // ;-) Ich hoffe, daß hat etwas geholfen. MotM Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gajUli Geschrieben 30. Mai 2001 Teilen Geschrieben 30. Mai 2001 Mit Verlaub Leute, ich glaube, mohament meint einen cast. int i=123; char c; c = (char) i; Uli Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
skiddoo Geschrieben 30. Mai 2001 Autor Teilen Geschrieben 30. Mai 2001 Original erstellt von EisenUli: <STRONG>Mit Verlaub Leute, ich glaube, mohament meint einen cast. int i=123; char c; c = (char) i; Uli</STRONG> genau das hab ich gesucht! danke! cu mohamet Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ketzer Geschrieben 1. Juni 2001 Teilen Geschrieben 1. Juni 2001 Original erstellt von mohamet: <STRONG>genau das hab ich gesucht! danke! cu mohamet</STRONG> Das hat aber nichts mit umwandeln zu tun. Die variable bleibt ein Integer (von der speicherung her), wird allerdings anders interpretiert (als char). Und eigendlich ist typecasten Codevergewaltigung... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
maddin Geschrieben 5. Juni 2001 Teilen Geschrieben 5. Juni 2001 Original erstellt von Ketzer: Und eigendlich ist typecasten Codevergewaltigung... kommt ganz auf den fall drauf an. normalerweise würde ich jeden schlagen der einfach nur so ein wenig castet aber es soll auch schon fälle gegeben haben, wo es nicht anders ging. da finde ich es dann schon in ordnung. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ketzer Geschrieben 5. Juni 2001 Teilen Geschrieben 5. Juni 2001 Original erstellt von maddin: <STRONG>kommt ganz auf den fall drauf an. normalerweise würde ich jeden schlagen der einfach nur so ein wenig castet aber es soll auch schon fälle gegeben haben, wo es nicht anders ging. da finde ich es dann schon in ordnung.</STRONG> Also Typecasting habe ich eigendlich bisher nur benötigt wenn ich void-pointer hatte. z.B. als Aufrufargument von einem Assemblermodul übergeben oder von malloc(). Meine Anmerkung war auch eher als "Warnung" zu verstehen. Ketzer Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Crush1 Geschrieben 6. Juni 2001 Teilen Geschrieben 6. Juni 2001 Sorry EisenUli, aber der Cast liefert keinen String zurück der als Zahl 123 erkannt werden könnte. Das mit ITOA ist die bessere Lösung. Am allerbesten ist es eine eigene Number-Klasse aufzubauen, die selbständig in hex oder Ascii oder CString, etc. umrechnet und nacher nur damit zu arbeiten (wenn auch alles richtig klappt). Letzte Möglichkeit, die ich noch nicht gesehen habe wäre die Zahl als Bits oder Nibbles zu berechnen. Das geht so: Zahl 123=%01111011 Man macht eine Tabelle, die den Bit-Wert von 0-32 enthält Bsp: Ascii&Bits (von rechts gelesen) 1*1 = %1 +1*2 = %10 +0*4 = %100 +1*8 = %1000 +1*16 = %10000 +1*32 = %100000 +1*64 = %100000 usw. Die bits werden einzeln ausge-ANDed (in Assembler gab´s noch den Rol ins Carry-Bit - geht heute auch noch mit dem integrierten MASM) und der Ascii-Wert in einm Char-Array aufaddiert. Überträge müssen berücksichtigt werden!! 01111011 wäre dann: 1 +2 +8 +16 +32 +64 =123 Das geht gut programmiert übrigens recht schnell und einfach! Nur ein wenig Platz für die Ascii-Werte muß reserviert werden - je nachdem mit wieviel Bits man maximal arbeitet 64 Bits = 64 Ascii-Werte!!! Das ganze geht natürlich auch mit Nibbles: 123=%0111 1011 = 0111*16 und 1011*1 hex 0xF = Zahlen 0-15 in einem Array FxF = Zahlen 16-255 genauso Hier werden die Bits also in 4er-Packs rausgeANDed. Das Aufaddieren funktioniert ansonsten gleich, alles geht noch schneller nur der Umfang der Ascii-Tabelle steigt um das 16-Fache. ist Aber dafür auch 4x schneller! Die Ascii-Tabellen kann man sich ja generieren lassen, da spart man sich dann viel Arbeit. Ich bin ehemaliger Assembler-Programmierer und da hat man das immer so gelöst! Ist zwar heute (fast) kein Thema mehr, aber wer wirklich alles übers Programmieren wissen will, sollte auch mal über den Tellerrand schauen. P.S.: Zum Programmieren von MMX1&2, ISSE & Geforce3 benötigt man übrigens wieder Assembler - also ganz ohne geht auch wieder nicht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gajUli Geschrieben 6. Juni 2001 Teilen Geschrieben 6. Juni 2001 Original erstellt von Crush1: <STRONG>Sorry EisenUli, aber der Cast liefert keinen String zurück der als Zahl 123 erkannt werden könnte.</STRONG> Soll er ja auch gar nicht. Es soll nach char gecastet werden. Uebrigens waere eine Umwandlung nach String auch gar keine Typumwandlung im Sinne eines Cast. Ein Grossteil der Debatte in diesem Thread beruht auf diesem Missverstaendnis. Uli Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Crush1 Geschrieben 6. Juni 2001 Teilen Geschrieben 6. Juni 2001 Wenn´s nur ums casten ging - das klappt natürlich warum auch nicht - dann ist´s genehmigt und ok! Ich denke auch das das zu Mißverständnissen führen kann. Alles klar! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.