lundi 8 juin 2015

Guava ByteArrayDataInput länge von UTF

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 Code:

  1. ChannelMessageUtil(byte[] bytes, String channel, Connection con){ ByteArrayDataOutput bado = ByteStreams.newDataOutput();
  2. bado.writeUTF(channel);
  3. this.bytes = copyOfRange(bytes, bado.toByteArray().length, bytes.length - bado.toByteArray().length);
  4. this.channel = channel;
  5. this.con = con;
  6. }
  7.  
  8.  
  9. private static byte[] copyOfRange(byte[] original, int from, int to) {
  10.  
  11.  
  12. int newLength = to - from;
  13. if(newLength < 0) throw new IllegalArgumentException(from + " > " + to);
  14. byte[] newByte = new byte[newLength];
  15. System.arraycopy(original, from, newByte, 0, Math.min(original.length - from, newLength));
  16. return newByte;
  17. }

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é


Guava ByteArrayDataInput länge von UTF

0 commentaires:

Enregistrer un commentaire