Hallo zusammen,
direkt zu meinem Problem.
Ich möchte gerne aus einem "byte" Array die ersten Bytes löschen. Die länge bestimme ich an dem ersten UTF String den ich bekomme. Hier mein ansatz:
Connection könnt ihr einfach überlesen. Der String channel ist der oben gennante String und bytes ist das Array.
Das Problem ist jetzt aber das ich, wenn ich aus dem String wieder ein ByteArray machen möchte dieser deutlich länger ist und ich eine IllegalArgumentException bekomme.
MFG René
direkt zu meinem Problem.
Ich möchte gerne aus einem "byte" Array die ersten Bytes löschen. Die länge bestimme ich an dem ersten UTF String den ich bekomme. Hier mein ansatz:
Java:
ChannelMessageUtil(byte[] bytes, String channel, Connection con){ ByteArrayDataOutput bado = ByteStreams.newDataOutput();
bado.writeUTF(channel);
this.bytes = copyOfRange(bytes, bado.toByteArray().length, bytes.length - bado.toByteArray().length);
this.channel = channel;
this.con = con;
}
private static byte[] copyOfRange(byte[] original, int from, int to) {
int newLength = to - from;
if(newLength < 0) throw new IllegalArgumentException(from + " > " + to);
byte[] newByte = new byte[newLength];
System.arraycopy(original, from, newByte, 0, Math.min(original.length - from, newLength));
return newByte;
}
Das Problem ist jetzt aber das ich, wenn ich aus dem String wieder ein ByteArray machen möchte dieser deutlich länger ist und ich eine IllegalArgumentException bekomme.
MFG René
Zuletzt bearbeitet: