Integer aus byte[] ohne ByteArrayInputStream

procurve

Erfahrenes Mitglied
Hi!

Wie lese ich ein Integer aus einem byte[]-Array heraus, ohne einen ByteArrayInputStream zu verwenden?

Folgendes habe ich versucht:
Java:
byte[] patch = {0,0,0,42};
int s = patch[0] << 24 + patch[1] << 16 + patch[2] << 8 + patch[3];

Dabei ist s leider 0.

Wo liegt der Fehler?
 
Zuletzt bearbeitet:
1. Fehler gefunden:
<< bindet schwächer als +, daher sind Klammern nötig:
Java:
byte[] patch = {0,0,0,42};
int s = (patch[0] << 24) + (patch[1] << 16) + (patch[2] << 8) + patch[3];

Das nächste Problem ist, dass patch[x] ein vorzeichenbehaftetes byte ist. Wie bekomme ich aus diesem ein vorzeichenloses byte?
 
Danke, schon was gefunden:

Um aus einem byte ein unsigned byte zu machen wird folgendes gemacht:

Java:
byte b = 211;
int unsigned = b & 0xFF

Damit ergibt sich aus meiner obigen Fragestellung der folgende Code:

Java:
byte[] patch = {0,0,0,42};
int s = ((patch[0] & 0xFF) << 24) + ((patch[1] & 0xFF) << 16) + ((patch[2] & 0xFF) << 8) + (patch[3] & 0xFF);

Erledigt! ;-)
 
Zurück