Guten Morgen. Ich muss Daten mit dem folgenden Format in einem ByteBuffer speichern. Dieser ByteBuffer wird dann gespeichert und später auf die Konsole gedruckt.Schreiben eines gemischten Datentyps in einen ByteBuffer
Datenformat:
10:30 [2] This is my message to you.
IntCharInt Char CharIntChar Char String
Die Speicher Teil sieht einfach.
ByteBuffer buff = ByteBuffer.allocate(100);
buffer.putInt(10).putChar(':').putInt(30).putChar(' ');
buffer.putChar('[').putInt(2).putChar(']').putChar(' ');
buffer.put("This is my message to you.".getBytes());
Ich kann das zugrunde liegende Byte-Array abrufen, indem Sie:
byte[] bArray = buff.array();
Wie kodieren ich die bArray in einer Reihe, so dass es auf die ursprüngliche Zeichenfolge (nach Wert-Gleichheit) gleich ist?
Vielen Dank
Sie scheinen auf dem richtigen Weg zu sein, also was genau funktioniert nicht? – Silverclaw
Bitte beachten Sie, dass 'buffer.putInt (10)' nicht den String "10" erzeugt. Es erzeugt vier Bytes, die die Ganzzahl 10 enthalten, die als Big-Endian-Nummer codiert ist! Ihr Code sieht so aus, als würden Sie alle Ihre Daten als String codieren, was nicht der Zweck eines ByteBuffers ist. Wenn Sie einen String erstellen möchten, verwenden Sie stattdessen einen 'StringWriter'. – Robert