Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
ich habe ein byte[] das versendet wird. Die Daten sind wie folgt aufgebaut:1byte Länge der Daten, Rest Daten.
Wenn ich das byte[] erhalte, lese ich die Länge aus, und erstelle mir anschließend ein byte[] mit genau dieser Länge, in dem die Daten gespeichert werden. Nun habe ich jedoch ein Problem. Die Daten die gesendet werden sehen so aus:
00 00 00 9d ac ed 00 05 73 72 00 1f 6a 61 76 61 78 ...
Insgesamt sind es 157 byte an Daten, die gesendet werden.
Wenn diese Daten erhalten werden, lese ich wie oben beschrieben zuerst die ersten 4 byte in ein neues byte[]. Aus diesem wird die Länge der Daten berechnet.
Java:
public int getLength() {
return (length[0] << 24) + (length[1] << 16) + (length[2] << 8) + length[3];
}
jedoch ist die berechnete Länge der Daten stehts -99 (00 00 00 9d).
D.h. das byte[] das anschließend die Daten speichern soll, kann nicht initialisiert werden.
auch nur einmal schreibt, bietet sich übrigens nach Möglichkeit eine weitere Hilfsmethode an, so dass diese Zeile dann nur noch
return (geFF(0) << 24) + (getFF(1) << 16) + (getFF(2) << 8) + getFF(3);
lautet oder auch
return geFF(0,24) + getFF(1,16) + getFF(2,8) + getFF(3,0);
Oh cool, genau das habe ich auch gebraucht.
Nur habe ich da ein problem.
Ich habe mir 2 Funktionen gebaut die wie folgt aussehen:
Java:
public static int byteArrayToInt(byte[] byteArray){
if (byteArray.length == 4)
return ((byteArray[0] & 0xff) << 24)
+ ((byteArray[1] & 0xff) << 16)
+ ((byteArray[2] & 0xff) << 8)
+ (byteArray[3] & 0xff);
else{
try {
throw new Exception("byteArray exception");
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
}
public static byte[] intToByteArray(int integer){
byte[] array = new byte[4];
for (int i = 0; i < 4; ++i) {
int shift = i << 3; // i * 8
array[3-i] = (byte)((integer & (0xff << shift)) >>> shift);
}
return array;
}
Nun habe ich eine kasse mit gettern und settern in den jeweiligen getter/setter-Metoden rufe ich dann die static funktionen auf.
Nun bekomme ich eine Exception
Exception in thread "Thread-518" java.lang.OutOfMemoryError: Java heap space