Hexzahlen immer mit 2 Stellen
-
Hi,
ich bin grad mal an nem Programm, dass nen paar HTML Farbcodes macht, mein Problem, wenn ich jetzt Farben wie 0 0 0 (schwarz, lt. RGB) habe, dann macht er daraus #000, weil der Rechner ja nur eine Stelle verwendet um die Null darzustellen.D.h. aus Integer 0 soll Hex 00 werden, wisst ihr wie ich das anstellen kann?
btw. ich verwende printf um den integer umzuwandeln, also printf("%X",i)
Gruß
Aur
-
int Dezimal=88; char Hex[2]; for (int i=1;i>=0;i--)//Hex-Code von hinten aufrollen { Hex[i]=Dezimal%16+48;//Rest der Division entspricht Potenz //von '1-i' zur Basis 16 if (Dezimal%16>9) Hex[i]+=39;//Buchstaben berücksichtigen Dezimal/=16;//16er Potenz ausklammern } Hex[2]=0;//String abschließen printf("%s\n",Hex);
Versuchs mal mit diesem Code. Setz dich am Besten mal mit der Umrechnung von
Dezimal nach Hex (oder Binär) auseinander.
Ist eine schöne Programmierübeng.Viel Erfolg,
Stefan
-
jo, ich werds versuchen....
Danke schonmal!
-
so, ahbs mir jetzt nochmal in Ruhe angeschaut, inzwischen hab ich auch verstanden wie das funktioniert...
Danke!
-
Das könnte man aber noch etwas übersichtlicher schreiben
int Dezimal=88; char Hex[2]; Hex[0]=Dezimal/16; Hex[1]=Dezimal%16; for(int i=0; i<2; i++) { if (Hex[i]>9) Hex[i]=Hex[i]-10+'A'; else Hex[i]+='0'; } Hex[2]=0; printf("%s\n",Hex);
-
DrZoidberg schrieb:
Das könnte man aber noch etwas übersichtlicher schreiben
Allerdings:
char Hex[3]; // <--- 3, nicht 2! printf("#%02X%02X%02X", Hex[0], Hex[1], Hex[2]);
-
ah cool, man kann %02X machen?
das is ja geil, ich werds mal ausprobieren!
Wäre denke ich die kürzeste Variante