Char mit einem in wert addieren
-
hallo,
ich habe folgende frage: und zwar möchte ich einer Variablen bspw. den binären wert 0b11110111 zuweisen. kann ich den beim einlesen der werte mit scanf, den teil ´0b´ als char mit den int-werten 11110111 addieren? welchen datentyp müsste ich dann insgesamt wählen, kann mir das jmd. vtl. sagen?
-
Nein, Standard-C kennt keine Binärzahlen.
Es gibt Compiler im Bereich der Mikrocontroller, die verstehen ein 0b am Anfang als Binärzahl.
scanf erkennt bei %i auch nur die Standardprefixe 0x für Hex und 0 (Null) für Oktal.Moment, bei strtol kann man die Zahlenbasis mit angeben.
Also char-Array einlesen und mit strtol umwandeln.Du kannst natürlich auch 0xf7 bei %i für eine int-Variable eingeben.
-
wow, danke....ich glaub das löst mein problem. hab dazu ne seite gefunden (http://home.fhtw-berlin.de/~junghans/cref/FUNCTIONS/strtol.html) wo das auch erklärt wird.
diese funktion kannte ich noch gar nicht. vielen dank für den hinweis.
edit: ich verstehe nicht ganz warum man als 2.parameter NULL eingeben, aber na ja....ich glaub ich komm jez trotzdem voran...;)
-
pac89 schrieb:
edit: ich verstehe nicht ganz warum man als 2.parameter NULL eingeben, aber na ja....ich glaub ich komm jez trotzdem voran...;)
Die Referenz ist ja auch falsch. Der zweite Parameter ist ein Rückgabewert! Du gibst nicht das Ende der Zahl an, strtol sagt dir, wo es das Ende gefunden hat.
Hier ist eine bessere Referenz:
http://www.cplusplus.com/reference/clibrary/cstdlib/strtol/
(Ja, ich weiß cplusplus.com hat auch ein paar Fehler, aber man muss schon ziemlich suchen, um sie zu finden)
-
ok. vielen dank. hast mir echt weitergeholfen...;)
-
Der gcc (auch MinGW) bietet im Standardmodus auch Binärliterale an, da wäre z.B. auch möglich:
int i = 0b0101; i += 0b1010;