Konvertierung von dezimal nach hexadezimal

8

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

    
kellymandem 04.11.2014, 14:38
quelle

7 Antworten

11

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:

%Vor%

Dies ändert natürlich auch die Ausgabe der kleinen Werte. Es druckt 000, 001, ...

    
Seelenvirtuose 04.11.2014 14:49
quelle
3

Verwenden Sie Integer.toHexString (i) anstelle von Ihrem eigenen

    
Omar.Nassar 04.11.2014 14:47
quelle
3

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%     
TheConstructor 04.11.2014 15:16
quelle
2

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.

    
nafas 04.11.2014 15:05
quelle
1

Sie sollten diese Methode zum Konvertieren von Dezimal zu Hexadezimal

verwenden %Vor%

finden Sie weitere Details zu diesem Link

Ссылка

    
Adrian Totolici 04.11.2014 14:42
quelle
1

Versuchen Sie oder passen Sie Ihren Code damit an:

%Vor%

Quelle: Ссылка

    
stacky 04.11.2014 14:51
quelle
1

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.

    
Shiva 21.11.2017 11:27
quelle

Tags und Links