Vergleichen von zwei hexadezimalen zahlen
Was ist die beste Methode zum vergleichen von zwei hexadezimalen zahlen (ist ein string)? Zum Beispiel,
string a = "3F";
string b = "32";
if (a > b)
MessageBox.Show("a is greater");
Funktionieren sollte. (Vorausgesetzt, > hat richtig überlastet).
- Deine Methode wird nicht funktionieren, wenn es Unterschiede in den Formaten, z.B.
"0x3F" < "32"
und"3f" < "3A"
. Sie sollten lassen Sie den built-in-system Konvertierungs-Routinen befassen sich mit der Komplexität der Darstellung hex-Werte als Zeichenfolgen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann man immer konvertieren Sie Sie in int-Werte und vergleichen Sie Sie auf diese Weise:
Scheint sicherer 🙂
Konvertieren Ganzzahlen und vergleichen Sie die zahlen.
Es gibt auch einen einfachen algo basiert auf String-comparisson:
Angenommen Ihre zahlen haben ein einzigartiges format: immer Kleinschreibung oder höher Kleinschreibung. Führenden 0x oder nicht, keine führenden Nullen. Dann können Sie dies so tun:
Wenn die Zahl a hat mehr Ziffern als die Zahl b: das a > b
Wenn die Anzahl der Ziffern gleich ist, könnte man die Verwendung von String.Vergleichen.
Dieser Algorithmus hat den Vorteil, es ist nicht beschränkt auf 32 oder 64 bits.
Hier ist eine ziemlich robuste Implementierung von hendrik ' s Vorschlag. Es gibt eine Reihe von Möglichkeiten, es könnte optimiert werden, wenn sich Ihre input-strings haben die bekannten Attribute, aber es sollte in der Lage sein zu vergleichen gültige hex-strings in jeder Größe und/oder mit gemischten Formaten.
Mit dieser Antwort auf die OP-Frage: