Ich habe ein Java-Programm geschrieben, das Dezimalzahlen von 1 bis 256 in hexadezimale konvertieren soll, aber das Problem kommt, wenn ich Dezimalzahlen über 256 versuche, nach denen ich falsche Ergebnisse bekomme. Hier ist ein meiner Code:
%Vor%Dies ist die Stichprobe der Ergebnisse, die ich bekommen habe:
%Vor%Hinweis: Ich habe gerade angefangen, Java zu lernen, also halte es einfach, wenn du kannst. Danke
Sie haben einfach vergessen, die Nullwerte auszudrucken, falls decimal
kleiner als der Vergleichswert ist. Wenn Sie diese Nullen explizit ausdrucken, brauchen Sie auch die Variable count
nicht mehr:
Dies ändert natürlich auch die Ausgabe der kleinen Werte. Es druckt 000, 001, ...
Verwenden Sie Integer.toHexString (i) anstelle von Ihrem eigenen
Also hat Seelenvirtuose eine gute Lösung für Nummern bis 4095 postuliert. Gehen wir weiter:
Das Hauptproblem (wie Sie vielleicht schon bemerkt haben) besteht darin, dass Sie vorhersagen müssen, was der Basiswert der höchsten Ziffer ist. Sie hatten eine Lösung, die zuerst auf 256, dann auf 16 prüft. Java kann den passenden Wert für uns finden:
%Vor% Die Berechnung des Basiswertes der höchsten Stelle kann bei hohen Zahlen teuer werden und kann sogar fehlschlagen, wenn die Zahl zu nahe bei Integer.MAX_VALUE
liegt. Wenn Sie den Wert der höchsten Dezimalzahl nicht vorher berechnen möchten, können Sie sich die nächste Funktion ansehen.
Da die höchsten Stellen immer noch verlassen werden müssen, können wir aber nur die niedrigste Stelle berechnen, berechnen wir zuerst die niedrigste Stelle und kehren die Reihenfolge um:
%Vor%Nun, die erste Antwort von @Seelenvirtuose ist einfach und leicht zu verstehen, ich will das nur abittieren. Die hexadezimale Basis ist 16, so dass Sie sich um keine andere Zahl kümmern müssen (z. B. 256). Hier habe ich Ihre zwei Methoden wie folgt vereinfacht:
%Vor%Alles, was ich mache, benutze Base 16 und Schleife, bis die Zahl 0 ist. Dieser Code basiert auf Ihrer eigenen Implementierung. so einfach zu verstehen.
Sie sollten diese Methode zum Konvertieren von Dezimal zu Hexadezimal
verwenden %Vor%finden Sie weitere Details zu diesem Link
Da Sie in Ihrer Frage erwähnt haben, dass Sie gerade mit dem Lernen von Java begonnen haben und es einfach halten wollen, würde ich vorschlagen, dass Sie das folgende Beispiel für mehr Dezimal- zu Hexadezimalkonvertierung in Java durchgehen,
Dezimal zu Hexadezimal-Java-Programm Beispiel.