Как определить конец строки в массиве байтов для преобразования строки?

я получаю из сокета строку в массиве байтов, которая выглядит так:

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

Размер, заданный сетевым протоколом, - это полная длина строки (включая нули), поэтому в моем примере 10.

Если я просто делаю:

String myString = new String(myBuffer); 

У меня в конце строки 5 неправильный символ. Преобразование, похоже, не определяет конец строкового символа (0).

Чтобы получить правильный размер и правильную строку, я делаю следующее:

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);

Есть ли лучший способ решить проблему?

Спасибо

5
задан grunk 4 November 2011 в 09:48
поделиться