12 Bit Hex Wert nach 8 Bit Hex Wert konvertieren
-
Hallo,
ich habe mit der GTK-Funktion "gdk_color_to_string()" einen String in der Form "#RRRRGGGGBBBB" bekommen.
Für meine Zwecke brauche ich aber einen normalen Hex-Farbwert der "#RRGGBB" lautet. Nach etwas googlen habe ich ruasgefunden dass obiger ein 12 bit Hex ist und den, den ich brauche ein 8 Bit Hex sein soll.
Nun könnte man das doch einfach konvertieren, oder nicht?
Habe schon gegoogled aber nichts dazu finden können...Verwende MinGW unter Windows und programmiere in C.
Sicher hat doch schonmal einer von euch vor so einem Problem gestanden...
Vielen Dank für eure Hilfe.
PS: Es eilt sehr...
PPS: Am Ende brauche ich die Werte in folgender Form: 0xRR, 0xGG, 0xBB.
-
Was ist denn dein Problem? Das Umwandeln von jeweils 4 Zeichen in einen int oder das Skalieren?
const char* clr = "FFFF00008080"; char comp[5]; strncpy(comp,clr,4); int r = strtol(comp,NULL,16); strncpy(comp,clr+4,4); int g = strtol(comp,NULL,16); strncpy(comp,clr+8,4); int b = strtol(comp,NULL,16); printf("R: %d\nG: %d\nB: %d\n",r,g,b); r = (255*r)/65535.f; g = (255*g)/65535.f; b = (255*b)/65535.f; unsigned int xrgb = (0xFF<<24) | (r<<16) | (g<<8) | b; printf("R: %d\nG: %d\nB: %d\n0x%X\n",r,g,b,xrgb);
-
typedef union { unsigned long l;unsigned char c; } LongChar; LongChar x[3]; sscanf("aabbccddeeff","%4lx%4lx%4lx",&x[0].l,&x[1].l,&x[2].l); printf("%02x%02x%02x",x[0].c,x[1].c,x[2].c);
-
Eure Posts haben mir sehr geholfen.
Ich habe das Problem lösen könne.
Grüße Chris