konventierung

KINK_LEO

Mitglied
Hallo,
Ich habe da ein kleines problemchen.

Unzwar versende ich verschieden Daten über netzt. In den Daten selber sin auch längenfelder.

|__1___|____2___|_________3_________|___2___|__________3_______|..........

1 --> gesamtlänge der Informationen
2 --> länge des folgenden Satzes
3 --> Satz

So ich habe das ganze schon in c gelöst nun müsste ich das auch noch in java lösen

also in c wäre das so ungefär

char* buffer ; <--- Der gesamte buffer
short inflen; <--- Länge der gesamt information
short setlen; <--- Länge des Satzes
char* set = NULL;

also

memcpy(&inflen,buffer,2); <--- nun habe ich die gesamt länge
memcpy(&setlen,buffer+2,2) <--- nun habe ich die Satz länge

set = new char[setlen+1];

memcpy( set,buffer+4,setlen);
set[setlen] = '\0';


soooo das war auch schon da ich aber in java keine memcpy methode besitzt tu ich mir ein wenig schwer damit. vielleicht kann mir ja jemand einen Tipp geben


gedankt ....


LEO
memcpy
 
Wenn du ein Byte-Array hast dann kannst du einen ByteBuffer nehmen:
Java:
ByteBuffer buf = ByteBuffer.wrap(array);
short inflen = buf.getShort();
short setlen = buf.getShort();

byte [] set = new byte[setlen];
buf.get(set,0,setlen);

System.out.println(new String(set));
 
Wenn du ein Byte-Array hast dann kannst du einen ByteBuffer nehmen:
Java:
ByteBuffer buf = ByteBuffer.wrap(array);
short inflen = buf.getShort();
short setlen = buf.getShort();

byte [] set = new byte[setlen];
buf.get(set,0,setlen);

System.out.println(new String(set));

@first Danke für den Tipp.
Da ja soooo lange keiner was dzu gesagt hat habe ich gedacht das ich das problem nicht gut genug erklärt habe.
aber coool wenn das so einfach ist

short inflen = buf.getShort();
short setlen = buf.getShort();

und bei den zwei Anweisungen verschieb er selber den offset ?

und hier müsste ja auch anstatt
buf.get(set,0,setlen);
buf.get(set,4,setlen); stehen oder ?
weil ja in den ersten 4 Bytes die längenfelder .
 
Das sind alles relative Operationen. Schau doch in der Doku dazu nach. Das heisst der Offset wird immer mit der Anzahl der gelesenen Bytes weiter verschoben. Es gibt auch absolute Methoden dazu die die Angabe des Offset verlangen.
 
Zurück