如何比较 Java 中的字节压缩字符串?

How to compare byte-packed string in Java?

我的 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 += '[=11=]';

稍后,我需要验证接收到的数据,但是当我尝试执行以下操作时,它 returns 错误。缓冲区中的数据和 strVal 的内容(至少我可以在调试器中查看)都是我所期望的。有什么想法吗?

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

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

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

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

从字节数组末尾删除 '[=10=]' 解决了问题。