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.
Schreibe einen Kommentar