In hexadezimalen Zahlenstring umwandeln - geht's schneller?



  • Weil ich C++.NET benutze und dieses beim Schreiben von Zahlenwerten kein Hexadezimales Format kennt (was ich aber brauche), habe ich eine eigene Funktion geschrieben, die das für mich erledigt:

    static System::Byte HexChars[]={"0123456789ABCDEF"};
    
    System::String^GetHex(System::Int64 Digit,System::Byte Spaces)
    {
        //Digit ist die Ziffer, die in das Hexadezimale Format gebracht
        //werden soll. Spaces ist die Maximalanzahl an Zeichen. Wird diese
        //unterschritten, werden zusätzliche Nullen drangehängt. Wird diese
        //überschritten, werden Zeichen abgeschnitten.
    
        System::String^Hex=L"";//Der String, der nachher die hexadezimale Zahl enthält.
        System::Int64 End=1;//Die Ziffer, durch die Digit geteilt wird.
        while(End*16<=Digit)//Größter, auf der Basis 16 bestehender Teiler.
            End*=16;
        while(End)//Nibbles rausfiltern.
        {
            Hex+=HexChars[(Digit-Digit%End)/End];//Divisor als Index verwenden.
            Digit%=End;//Bis zum nächsten Nibble gehen.
            if(End==1)//Abbruchbedingung
                End--;
            else
                End/=16;//Den Teiler auf das nächste Nibble einstellen.
        }
        if(Hex->Length>Spaces)
            Hex=Hex->Substring(Hex->Length-Spaces,Spaces);//Eventuell überschüssige Nibble löschen.
        if(Hex->Length<Spaces)
            Hex=Hex->PadLeft(Spaces,L"0");//Eventuell fehlende Spaces einfügen.
        return Hex;
    }
    

    Meine Frage: Ist mein Algorithmus in Ordnung, oder kann man noch was verbessern?



  • int zahl = 10;
    String ^s1 = zahl.ToString("X"); // -> A
    String ^s2 = zahl.ToString("x"); // -> a
    String ^s3 = zahl.ToString("X4"); // -> 000A
    

    Edit: / hinzugefügt - dann mein Haustroll



  • Herr Mogel, bitte Codetags benutzen...

    int zahl = 10; 
    String ^s1 = zahl.ToString("X"); // -> A 
    String ^s2 = zahl.ToString("x"); // -> a 
    String ^s3 = zahl.ToString("X4"); // -> 000A
    

    Gruß,

    Stromberg



  • hi,

    da kommt denn auch gleich mal die Frage

    geht es denn genau so einfach von HEX in DEC ???


Log in to reply