Как сравнить байтовую строку в Java? - PullRequest
0 голосов
/ 10 апреля 2019

Мое Java-приложение имеет упакованный в байты объект String, который собран из удаленных данных, полученных по внешнему соединению.Строка собрана следующим образом:

byte[] buffer = new byte[20];
/* ... buffer is loaded ... */
int j = 9;
String strVal = "";
for( i=0; i<8; i++ )
{
    strVal += (char)buffer[j++];
}
strVal += '\0';

Позже мне нужно проверить полученные данные, но при попытке выполнить следующее возвращает false.И данные в буфере, и содержимое strVal (по крайней мере, то, что я могу просмотреть в отладчике) - это то, что я ожидал.Есть идеи?

return strVal.equals("STR GOOD"); // evaluates as false when should be true

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

Удаление '\0' из конца байтового массива решило проблему.

0 голосов
/ 10 апреля 2019

Не добавлять 0, используйте i в цикле:

    byte[] buffer = new byte[20];
    /* ... buffer is loaded ... */

    String strVal = "";
    for (int i = 0; i < 8; i++) {
        strVal += (char) buffer[i];
    }
...