Hallo!
Ich bekomme ein Bytearray und benötige die Short Werte daraus:
Das ByteArray in Hex:
000B00000023FE0320014C010D010E0110FE0CFE0CFE0CFE0CFE0CFE0CFE0CFE0CFE0CFE0CFE0C010F
Lege das ganze in einen ByteBuffer:
und hole mir die 16 Werte raus:
Klappt ... jedoch beim letzten erhalte ich:
Exception in thread "SocketClient" java.lang.IndexOutOfBoundsException
at java.nio.Buffer.checkIndex(Unknown Source)
at java.nio.HeapByteBuffer.getShort(Unknown Source)
Jedoch hat der ByteBuffer eine Bufferlimit von 41:
java.nio.HeapByteBuffer[pos=0 lim=41 cap=41]
Warum erhalte ich diesen Fehler?
Die Positionen müssen aber korrekt sein, da die Werte Temperaturen von 16 Eingängen eines TCP Modules sind und von 1-15 korrekt in Kelvin ausgegeben wird.
Danke!
Ich bekomme ein Bytearray und benötige die Short Werte daraus:
Das ByteArray in Hex:
000B00000023FE0320014C010D010E0110FE0CFE0CFE0CFE0CFE0CFE0CFE0CFE0CFE0CFE0CFE0C010F
Lege das ganze in einen ByteBuffer:
Java:
ByteBuffer bb = ByteBuffer.wrap(msg);
bb.order(ByteOrder.LITTLE_ENDIAN);
Java:
k1 = (double) bb.getShort(10) / 10 + 273.15;
k2 = (double) bb.getShort(12) / 10 + 273.15;
k3 = (double) bb.getShort(14) / 10 + 273.15;
k4 = (double) bb.getShort(16) / 10 + 273.15;
k5 = (double) bb.getShort(18) / 10 + 273.15;
k6 = (double) bb.getShort(20) / 10 + 273.15;
k7 = (double) bb.getShort(22) / 10 + 273.15;
k8 = (double) bb.getShort(24) / 10 + 273.15;
k9 = (double) bb.getShort(26) / 10 + 273.15;
k10 = (double) bb.getShort(28) / 10 + 273.15;
k11 = (double) bb.getShort(30) / 10 + 273.15;
k12 = (double) bb.getShort(32) / 10 + 273.15;
k13 = (double) bb.getShort(34) / 10 + 273.15;
k14 = (double) bb.getShort(36) / 10 + 273.15;
k15 = (double) bb.getShort(38) / 10 + 273.15;
//k16 = (double) bb.getShort(40) / 10 + 273.15;
Klappt ... jedoch beim letzten erhalte ich:
Exception in thread "SocketClient" java.lang.IndexOutOfBoundsException
at java.nio.Buffer.checkIndex(Unknown Source)
at java.nio.HeapByteBuffer.getShort(Unknown Source)
Jedoch hat der ByteBuffer eine Bufferlimit von 41:
java.nio.HeapByteBuffer[pos=0 lim=41 cap=41]
Warum erhalte ich diesen Fehler?
Die Positionen müssen aber korrekt sein, da die Werte Temperaturen von 16 Eingängen eines TCP Modules sind und von 1-15 korrekt in Kelvin ausgegeben wird.
Danke!