Casten - "0x000000ff" in long
-
Moin Gemeinde,
folgende Frage: aus einer Datei bekomme ich Farbwerte, z. B. 0x000000ff. Nun sollen mit diesen Werten div. Objekte( habe ein ListenTool, davon Rows, Header, ... ) eingefärbt werden. Wie mache ich also aus 0x000000ff einen verwendbaren, z. B. RGB oder long Wert?
Thx schonmal im voraus
grüssle
-
Ist das ein String?
Wie kommt der in die Datei? Wenn du den als Dezimalzahl schreibst, kannst du atol verwenden um später einen long daraus zu machen.
-
Ja, ein CString. Wird von einer Funktion CString Klasse::GetIniWert(...) geliefert.
Und da fangen meine Probs eigentlich an.grüssle
-
Wo wird der Wert in die Ini gepackt, hast du da Einfluß drauf?
Wenn ja, sollte man dort ansetzen, ich schätze das ist einfacher.Wenn nein: Bastel dir eine kleine Funktion, die dir von Hex-CString in long konvertiert.
Hex-String in eine Zahl wandeln ist einfach, irgendwo liegen dafür bestimmt sogar noch Struktugramme rum - aber herleiten geht schneller als suchen.
-
estartu schrieb:
Wenn nein: Bastel dir eine kleine Funktion, die dir von Hex-CString in long konvertiert.
Hex-String in eine Zahl wandeln ist einfach, irgendwo liegen dafür bestimmt sogar noch Struktugramme rum - aber herleiten geht schneller als suchen.Wieso selber basteln? Dafür gibt es doch man: strtol (gib als Basis 16 (für Hex) an):
char* end; long val=strtol(str,&end,16);
-
@ CStoll
stimmt, hab ich zwischenzeitlich entdeckt und funktioniert auch.
Thx an alle, die geholfen haben
grüssle
-
Danke CStoll.
Ich habe mal den Betreff an die Lösung angepasst.