Datenkonvertierung #2. int -> char[] -> int
-
Hallo,
ich hab zu dem Thema schonmal ein Threat aufegemach, nun sieht das Problem aber schon wieder etwas anders aus, so dass ich am besten nochmal frage.Ich habe einen Integer( 4 byte ) und will diesen auf einen charbuffer[ 4 ] konvertieren.
unsigned int test = 100; char * buffer [ sizeof( test ) ]; *buffer[0] = char( test );erste Frage: Ist das der richtige Weg ?
zweite Frage: Nun habe ich ein Char-Array mit 4 Feldern. Was muss ich machen um dies wieder auf ein unsigned int zu konvertieren ?
//
Das ganze muss unter Windows und Linux laufen, so dass ich diese oft empfohlenen atoi() etc. Funktionen nicht nutzen kann.
-
mutehim schrieb:
Ich habe einen Integer( 4 byte ) und will diesen auf einen charbuffer[ 4 ] konvertieren.
und das heisst?
unsigned int test = 100; char * buffer [ sizeof( test ) ]; *buffer[0] = char( test );erste Frage: Ist das der richtige Weg ?
Nö. Das ist undefiniertes verhalten.
zweite Frage: Nun habe ich ein Char-Array mit 4 Feldern.
Du hast ein array aus vier pointern auf char.
möglicherweise meinst du etwas in der art
union { unsigned v; char buf[sizeof(v)]; }; v = 100; // tu irgendwas mit bufdas ist legal aber nicht portabel. der inhalt von buf hängt hier vom byte ordering deiner plattform ab.
-
hallo,
atoi ist aber Standard C, läuft also auch unter Linux...
Wenn du nur den Typ wechseln willst, dann caste einfach:
int zahl = 100;
char *c = (char *)&zahl;
-
Das geht sicher in die Hose. (Bei 100 klappts noch).
sizeof(int) ist zwar 4, aber ein int dezimal kann bis zu 2^32 werden
-> ~4300000000. Du brauchst also mindestens einen char [11].