Zum Inhalt springen

typumwandlung????


skiddoo

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...