如何在Java中比较字节填充的字符串?

时间:2019-04-10 15:51:08

标签: java string-comparison

我的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 :(得分:0)

从字节数组的末尾删除'\0'解决了该问题。

答案 1 :(得分:-1)

不要追加0,请在循环中使用i:

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

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