Char[] byteweise anzeigen.
-
Hallo,
ich möchte einen Chararray byteweise (als Zahlen) anzeigen. Ich hab verschiedenes probiert u.a. Mit pointern druff und verschieben hat aber leider irgendwie alles net funktioniert.
Wäre nett wenn einer code postet wies funzt oder zumindest n tipp gibt.Danke!
-
du kannst die elemente doch einfach auf int casten.
printf( "zahl: %d\n", (int)charArray[4] );
-
> printf( "zahl: %d\n", (int)charArray[4] );
Der Cast ist nicht nötig! printf("Zahl: %d\n", charArray[4]); reicht. Das char wurde typlos übergeben. printf interpretiert die daten als int durch das "%d" im string.
-
Hmmm... hatten wir das nicht schonmal? (Wenn nur endlich die Suche wieder funktionieren würde).
Mit printf("Zahl: %d\n", charArray[4]); übergibst du printf ein char, obwohl im Formatstring int steht. Dieser Code funktioniert nur dann, wenn char bei der Parameterübergabe genauso groß ist wie int. Das mag bei manchen Compilern/CPUs zutreffen, garantiert ist das aber ziemlich sicher nicht; daher hat dieser Code nichts in einem Standard-C-Forum zu suchen.
-
Argh! Stimmt! Ich nehme meinen Beitrag zurück! Dann ist das erste Byte mit dem char-wert gefüllt und die nächsten drei undefiniert! Sry!
Der cast MUSS sein!
Siehe entelechie
-
Damit kommen leider ofters negative werte (glaube wenn >128). auch wenn ich (unsigned int) caste
trotzdem danke schonmal
-
cd9000 schrieb:
Hmmm... hatten wir das nicht schonmal? (Wenn nur endlich die Suche wieder funktionieren würde).
Mit printf("Zahl: %d\n", charArray[4]); übergibst du printf ein char, obwohl im Formatstring int steht. Dieser Code funktioniert nur dann, wenn char bei der Parameterübergabe genauso groß ist wie int. Das mag bei manchen Compilern/CPUs zutreffen, garantiert ist das aber ziemlich sicher nicht; daher hat dieser Code nichts in einem Standard-C-Forum zu suchen.
Ist es nicht so, dass bei varargs die integral promotion angewendet wird, also short und char-Werte automatisch auf int konvertiert werden? Sicher bin ich mir aber gerade nicht...
-
Das da negative Werte bei rauskommen liegt daran, dass der Ausgangswert nicht unsigned ist! du hast garantiert char und nicht unsigned char!
Außerdem kann es sein, dass printf für unsigned einen eigenen "Parameter" hat, aber das weiß ich jetzt nicht genau.
-
SG1 schrieb:
Ist es nicht so, dass bei varargs die integral promotion angewendet wird, also short und char-Werte automatisch auf int konvertiert werden? Sicher bin ich mir aber gerade nicht...
Darfst Du aber sein.