Wie speichern hexadezimalen Wert in kurze Variablen, die mit java?
Wenn ich zugewiesen vlanid=0x960
.(hexadezimaler Wert) direkt,Es funktioniert sehr gut. Aber wenn ich java-Funktion für den gleichen Zweck,Es lagern sich als dezimal-Wert. Befestigte ich den code hier.
int vlanid,
short vlanid1;
vlanid= (int) jSpinner1.getModel().getValue();
vlanid1 = Short.parseShort(((Integer.toHexString(vlanid))),16);
Was das spinnermodel verwenden Sie?
Und warum kann man nicht einfach casten? kurze vlanid1 = (short)vlanid;
Intern, was Wert, den Sie zuweisen, um einen kurzen gespeichert ist, als seine binäre Darstellung, zum Beispiel 0000 1110 0110 0010. Dies wird interpretiert als dezimal-in den meisten Kontexten, aber der Wert ist der gleiche, egal wie Sie zu interpretieren (hexadezimal, dezimal -, Oktav -, Binär, etc) Zum Beispiel, die Nummern 16 und 0x10 die gleiche Anzahl, so dass, wenn Sie zuweisen, 0x10, um eine kurze und drucken Sie es drucken 16. Aber wenn Sie explizit drucken Sie es als eine hexadezimale Zahl, die Sie bekommen, 0x10, mit der gleichen Zahl.
drucken Sie die vlanid nach getValue. Ich denke, das problem ist in es
+1 @Patashu. An den OP:Wir drucken nur zahlen zur Basis 10 ist in der Regel (im Gegensatz zur Basis 2; Binär), weil es für uns einfacher ist, zu behandeln. Wenn Sie wollen, es zu drucken, in Basis 16 (hexadezimal) format nur die
Und warum kann man nicht einfach casten? kurze vlanid1 = (short)vlanid;
Intern, was Wert, den Sie zuweisen, um einen kurzen gespeichert ist, als seine binäre Darstellung, zum Beispiel 0000 1110 0110 0010. Dies wird interpretiert als dezimal-in den meisten Kontexten, aber der Wert ist der gleiche, egal wie Sie zu interpretieren (hexadezimal, dezimal -, Oktav -, Binär, etc) Zum Beispiel, die Nummern 16 und 0x10 die gleiche Anzahl, so dass, wenn Sie zuweisen, 0x10, um eine kurze und drucken Sie es drucken 16. Aber wenn Sie explizit drucken Sie es als eine hexadezimale Zahl, die Sie bekommen, 0x10, mit der gleichen Zahl.
drucken Sie die vlanid nach getValue. Ich denke, das problem ist in es
+1 @Patashu. An den OP:Wir drucken nur zahlen zur Basis 10 ist in der Regel (im Gegensatz zur Basis 2; Binär), weil es für uns einfacher ist, zu behandeln. Wenn Sie wollen, es zu drucken, in Basis 16 (hexadezimal) format nur die
single
als solche. Wenn dieses nicht ist, was eigentlich machen willst, bitte klarer seinInformationsquelleAutor Sudhakar | 2013-05-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es scheint, dass Sie waren nicht das Verständnis der Informationen in den Kommentaren, so dass hier ein Beispiel, das zeigt, dass es egal ist, ob es ursprünglich gespeichert als "dezimal" oder "hexadezimal"
Ausgabe:
EDIT:
In Antwort auf Ihren Kommentar habe ich Euch ein Beispiel, der sich von einem
int
zu einemshort
mit zwei verschiedenen Methoden. Was Sie scheinen zu sein, immer gefangen, ist dass der intshould be in hexadecimal value
; dies ist nicht, wie die Werte gespeichert werden (egal ob int, short, long, etc.). Alle dieser Typen werden intern gespeichert, als zweier-Komplement-Ganzzahlen (Finden Sie in diesem Beitrag). Also im Beispiel unten werden beideint1
undint2
repräsentieren den gleichen WertAusgabe:
Habe ich sowohl die cast-Methode und mask-Methode hier, weil Sie explizit auf die Maskierung des integer-Wert. Es sei denn, Sie haben etwas besonderes zu tun mit bit maskieren, ich würde sehr empfehlen die einfacher cast Ansatz, da es keinen funktionalen Unterschied in der Ausgabe-Wert.
InformationsquelleAutor Craig
Die Zahl wird immer gespeichert als zwei-Komplement binäre. Jedoch, wenn Sie die Anzeige dieser Zahl, die Sie in der Regel sehen Sie das Ergebnis Kurz.toString(kurz) erzeugt eine Dezimalzahl standardmäßig.
Dem format, wie Sie beschreiben, die Anzahl ist nicht wichtig und nicht gespeichert. Nur der Wert zählt, und diese können dargestellt werden als dezimal (Standard) oder jeder anderen Basis, die Sie wollen von der Basis 2 bis zur Basis 36.
InformationsquelleAutor Peter Lawrey