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 ???