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


Anmelden zum Antworten