Mit (f)printf Hexadezimalzahl in bestimmten Format ausgeben



  • Hallo,

    ich würde gerne mit fprintf/printf Hexadezimalzahlen ausgeben:

    Die Variable fürs printf ist immer ein unsigned long int mit 32bit die in der folgenden Form ausgegeben werden sollen:

    0x12AB0000 (x klein, A-F groß, geht soweit ich weiß nicht mit # x/X, entweder beides klein oder beides groß, naja nicht so schlimm)

    Wichtiger:

    0x00000000 (alle Zahlen sollen mit 8 Stellen ausgegeben werden, 0 soll ebenfalls das 0x erhalten; das ganze haut mit der Längenangabe 8 und Flag 0 im Formatstring auch nicht so hin)

    Lösungsvorschläge?



  • Das "0x" kannst du auch direkt ausgeben, bevor du die eigentliche Zahl schreibst. Und die Länge kannst du auch über die Präzission steuern:

    /*a:*/ printf("0x%08X",value);
    /*b:*/ printf("0x%.8X",value);
    


  • printf("0x%08X",...

    [edit] Zu spaet. 🤡



  • Oh mann, total aufm Schlauch gestanden 😃

    Achja bei der Länge wird 0x übrigens mitgezählt falls es den ein oder anderen interessiert. Mit 10 statt 8, hatte ich wenigstens schonmal überall die gewünschte Stellenanzahl 🙂


Anmelden zum Antworten