Guava ByteArrayDataInput länge von UTF

TheCoder

Mitglied
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:
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;
    }
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é
 
Zuletzt bearbeitet:

Zurück
Oben