Java-string hex zu int
Ich umwandeln wollen, unter hex-String in einen Int (16).
a6 5f de 57
Was habe ich getan, aber ich weiß nicht, es ist der richtige Weg und ich kann nicht überprüfen, ob die Nummer korrekt ist oder nicht.
byte[] rec = new byte[20];
DatagramPacket pRec = new DatagramPacket(rec, rec.length);
socket.receive(pRec);
String tData = "";
for(int i = 0; i < 20; i++){
tData += String.format("%02x", rec[i]);
}
Den Ausgang aus dem Paket:
ffffffff730aa65fde5700000000000000000000
Und jetzt muss ich überspringen die ersten 6 bytes [ffffffff730a] und ich brauche die restlichen 4 bytes [a65fde57]. Anmerkung: [00000000000000000000] sind NULL, weil die Länge des Puffers.
System.out.println( hexToInt(tData, 6, 10) );
private Integer hexToInt(String str, int start, int end){
String t = str.substring(start, end);
char[] ch = t.toCharArray();
String res = "";
for(int i = 0; i < end-start; i += 2){
res += Integer.parseInt(ch[i]+ch[i+1]+"", 16);
}
return Integer.parseInt(res);
}
Und das Ergebnis ist:
516262
Ist das der richtige Weg, um konvertieren von hex-String in einen int? Ist das Ergebnis korrekt?
- Vielleicht... es ist völlig davon abhängig, wie Sie Sie es geschickt über den Draht (
DatagramPacket
). Siehe Little-Endian und Big-Endian. - Was ist das problem mit Integer.parseInt(hexStr, 16)
- System.aus.println( Integer.parseInt("a65fde57", 16) ); java.lang.NumberFormatException: For input string: "a65fde57"
- Was sind Sie WIRKLICH versuchen, zu tun? Lesen einer int-aus einem input-stream?
- Ich habe, dass die String-hex "a6 5f de 57" und ich will es konvertieren in int.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfachste Sache wäre, etwas zu verwenden wie int i = Integer.parseInt(...). Sehen Integer.parseInt(java.lang.String, int)
Nein, das ist nicht der richtige Weg, und das ist nicht die richtige Antwort. Was Sie tun, ist die Umwandlung der bytes Werte, sondern konvertiert Sie zurück in Dezimalwert-string, und verketten diese miteinander. Dann, am Ende, Sie zu konvertieren zurück zu numerischen format. Nicht hin und her konvertieren so viel, einmal konvertieren von numerischen und dort zu halten. So etwas wie dieses:
Würd ich persönlich diesen Weg gehen:
Natürlich könnten Sie trim down eine Ebene nur auf der Durchreise substring mit den 8 Zeichen, die Sie konvertieren möchten.
Denken Sie daran, wenn Sie den Hex-String-Format ist mit dem Präfix "0x" wie "0xc38", dann entfernen Sie bitte die Zeichenfolge " 0x " aus dieser Hex-String.(Ich schlug vor, dies zu tun, um zu vermeiden NumberFormatException)
Können Sie verwenden Sie folgenden code, um so zu tun
Also die Letzte Funktion würde wie folgt Aussehen