Hallo zusammen,
ich habe eine Frage zu folgender Aufgabe und möchte euch sagen wie ich es gelöst habe.
Ein User kann 4 Parameter in ein Java-Programm eingeben (bzw. in eine XML-Konfigurationsdatei).
- Var_A (1 Byte)
- Var_B (2 Byte)
- Var_C (2 Byte)
- Var_D (1 Byte)
Diese Parameter sind Hex Zeichen.
Erlaubt sind also für Var_A und Var_D (0x01 - 0xFF), sowie für Var_B und Var_C (0x0000 - 0xFFFF).
Die Hex Zeichen dieser Variablen werden dann alle in der oben angegebenen Reihenfolge verarbeitet (Hex Zeichen für Hex Zeichen). Ich habe dann z.B. so einen Hex ASCII String 0300CE000401
Die eingegeben Parameter serialisere ich mit Castor und erhalte dann alle Parameter als int variablen.
Als nächste prüfe ich dann für diese 4 Variablen ob der Wertebereich eingehalten wurde oder nicht und nur falls alles korrekt ist fahre ich fort.
(Var_A und Var_D zwischen 0-255; Var_B und Var_C zwischen 0-65535)
Über
erhalte ich für Var_A und Var_D den Hex string.
Da ich alle Hex Zeichen in der beschriebenen Reihenfolge verarbeiten muss, brauche ich den folgenden Code um von den Variablen Var_B und Var_C
zuerst das vordere und dann das hintere Hex Zeichen zu bekommen:
Das funktioniert zwar alles so wie es soll, aber ich frage mich ob es eine schönere Möglichkeit gibt meine Aufgabe zu lösen. Vielleicht habt ihr
dazu noch einen Vorschlag?
Vielen Dank
ich habe eine Frage zu folgender Aufgabe und möchte euch sagen wie ich es gelöst habe.
Ein User kann 4 Parameter in ein Java-Programm eingeben (bzw. in eine XML-Konfigurationsdatei).
- Var_A (1 Byte)
- Var_B (2 Byte)
- Var_C (2 Byte)
- Var_D (1 Byte)
Diese Parameter sind Hex Zeichen.
Erlaubt sind also für Var_A und Var_D (0x01 - 0xFF), sowie für Var_B und Var_C (0x0000 - 0xFFFF).
Die Hex Zeichen dieser Variablen werden dann alle in der oben angegebenen Reihenfolge verarbeitet (Hex Zeichen für Hex Zeichen). Ich habe dann z.B. so einen Hex ASCII String 0300CE000401
Die eingegeben Parameter serialisere ich mit Castor und erhalte dann alle Parameter als int variablen.
Als nächste prüfe ich dann für diese 4 Variablen ob der Wertebereich eingehalten wurde oder nicht und nur falls alles korrekt ist fahre ich fort.
(Var_A und Var_D zwischen 0-255; Var_B und Var_C zwischen 0-65535)
Über
Integer.toHexString(variable);
erhalte ich für Var_A und Var_D den Hex string.
Da ich alle Hex Zeichen in der beschriebenen Reihenfolge verarbeiten muss, brauche ich den folgenden Code um von den Variablen Var_B und Var_C
zuerst das vordere und dann das hintere Hex Zeichen zu bekommen:
int variable = ...;
byte highByte = (byte) (variable >> 8);
String variableHigh = String.format("%02X", highByte);
byte lowByte = (byte) variable;
String variableLow = String.format("%02X", lowByte);
byte highByte = (byte) (variable >> 8);
String variableHigh = String.format("%02X", highByte);
byte lowByte = (byte) variable;
String variableLow = String.format("%02X", lowByte);
Das funktioniert zwar alles so wie es soll, aber ich frage mich ob es eine schönere Möglichkeit gibt meine Aufgabe zu lösen. Vielleicht habt ihr
dazu noch einen Vorschlag?
Vielen Dank