Wie erkennen Ende von string in byte-array zu string-Konvertierung?

Erhalte ich vom socket einen string in ein byte-array, welches wie folgt Aussehen :

[128,5,6,3,45,0,0,0,0,0]

Die Größe gegeben durch das Netzwerk-Protokoll ist die gesamte Länge der Zeichenfolge (einschließlich Nullen) also , in meinem Beispiel 10.

Wenn ich einfach tun :

String myString = new String(myBuffer); 

Habe ich am Ende der Zeichenfolge 5-nicht richtige Art. Die Umwandlung don ' T scheint zu erkennen das Ende der Zeichenkette caracter (0).

Zu Holen Sie sich die richtige Größe und die richtige Zeichenfolge ich dies tun :

int sizeLabelTmp = 0;
//Iterate over the 10 bit to get the real size of the string
for(int j = 0; j<(sizeLabel); j++) {
    byte charac = datasRec[j];
    if(charac == 0)
        break;
    sizeLabelTmp ++;
}
//Create a temp byte array to make a correct conversion
byte[] label    = new byte[sizeLabelTmp];
for(int j = 0; j<(sizeLabelTmp); j++) {
    label[j] = datasRec[j];
}
String myString = new String(label);

Gibt es einen besseren Weg, um das problem umgehen ?

Dank

InformationsquelleAutor grunk | 2011-11-04

Schreibe einen Kommentar